Deleted Added
full compact
trap_subr64.S (174599) trap_subr64.S (176742)
1/* $FreeBSD: head/sys/powerpc/aim/trap_subr.S 174599 2007-12-14 22:39:35Z marcel $ */
1/* $FreeBSD: head/sys/powerpc/aim/trap_subr.S 176742 2008-03-02 17:05:57Z raj $ */
2/* $NetBSD: trap_subr.S,v 1.20 2002/04/22 23:20:08 kleink Exp $ */
3
4/*-
5 * Copyright (C) 1995, 1996 Wolfgang Solfrank.
6 * Copyright (C) 1995, 1996 TooLs GmbH.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without

--- 125 unchanged lines hidden (view full) ---

135 stw %r24, FRAME_24+8(%r1); \
136 stw %r25, FRAME_25+8(%r1); \
137 stw %r26, FRAME_26+8(%r1); \
138 stw %r27, FRAME_27+8(%r1); \
139 stw %r28, FRAME_28+8(%r1); \
140 stw %r29, FRAME_29+8(%r1); \
141 stw %r30, FRAME_30+8(%r1); \
142 stw %r31, FRAME_31+8(%r1); \
2/* $NetBSD: trap_subr.S,v 1.20 2002/04/22 23:20:08 kleink Exp $ */
3
4/*-
5 * Copyright (C) 1995, 1996 Wolfgang Solfrank.
6 * Copyright (C) 1995, 1996 TooLs GmbH.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without

--- 125 unchanged lines hidden (view full) ---

135 stw %r24, FRAME_24+8(%r1); \
136 stw %r25, FRAME_25+8(%r1); \
137 stw %r26, FRAME_26+8(%r1); \
138 stw %r27, FRAME_27+8(%r1); \
139 stw %r28, FRAME_28+8(%r1); \
140 stw %r29, FRAME_29+8(%r1); \
141 stw %r30, FRAME_30+8(%r1); \
142 stw %r31, FRAME_31+8(%r1); \
143 lwz %r28,(savearea+CPUSAVE_DAR)(%r2); /* saved DAR */ \
144 lwz %r29,(savearea+CPUSAVE_DSISR)(%r2);/* saved DSISR */ \
143 lwz %r28,(savearea+CPUSAVE_AIM_DAR)(%r2); /* saved DAR */ \
144 lwz %r29,(savearea+CPUSAVE_AIM_DSISR)(%r2);/* saved DSISR */\
145 lwz %r30,(savearea+CPUSAVE_SRR0)(%r2); /* saved SRR0 */ \
146 lwz %r31,(savearea+CPUSAVE_SRR1)(%r2); /* saved SRR1 */ \
147 mfxer %r3; \
148 mfctr %r4; \
149 mflr %r5; \
150 andi. %r5,%r5,0xff00; /* convert LR to exc # */ \
151 stw %r3, FRAME_XER+8(1); /* save xer/ctr/exc */ \
152 stw %r4, FRAME_CTR+8(1); \
153 stw %r5, FRAME_EXC+8(1); \
145 lwz %r30,(savearea+CPUSAVE_SRR0)(%r2); /* saved SRR0 */ \
146 lwz %r31,(savearea+CPUSAVE_SRR1)(%r2); /* saved SRR1 */ \
147 mfxer %r3; \
148 mfctr %r4; \
149 mflr %r5; \
150 andi. %r5,%r5,0xff00; /* convert LR to exc # */ \
151 stw %r3, FRAME_XER+8(1); /* save xer/ctr/exc */ \
152 stw %r4, FRAME_CTR+8(1); \
153 stw %r5, FRAME_EXC+8(1); \
154 stw %r28,FRAME_DAR+8(1); \
155 stw %r29,FRAME_DSISR+8(1); /* save dsisr/srr0/srr1 */ \
154 stw %r28,FRAME_AIM_DAR+8(1); \
155 stw %r29,FRAME_AIM_DSISR+8(1); /* save dsisr/srr0/srr1 */ \
156 stw %r30,FRAME_SRR0+8(1); \
157 stw %r31,FRAME_SRR1+8(1)
158
159#define FRAME_LEAVE(savearea) \
160/* Now restore regs: */ \
161 lwz %r2,FRAME_SRR0+8(%r1); \
162 lwz %r3,FRAME_SRR1+8(%r1); \
163 lwz %r4,FRAME_CTR+8(%r1); \

--- 103 unchanged lines hidden (view full) ---

267 mtsprg1 %r1 /* save SP */
268 GET_CPUINFO(%r1)
269 stw %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */
270 stw %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
271 stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
272 stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1)
273 mfdar %r30
274 mfdsisr %r31
156 stw %r30,FRAME_SRR0+8(1); \
157 stw %r31,FRAME_SRR1+8(1)
158
159#define FRAME_LEAVE(savearea) \
160/* Now restore regs: */ \
161 lwz %r2,FRAME_SRR0+8(%r1); \
162 lwz %r3,FRAME_SRR1+8(%r1); \
163 lwz %r4,FRAME_CTR+8(%r1); \

--- 103 unchanged lines hidden (view full) ---

267 mtsprg1 %r1 /* save SP */
268 GET_CPUINFO(%r1)
269 stw %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */
270 stw %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
271 stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
272 stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1)
273 mfdar %r30
274 mfdsisr %r31
275 stw %r30,(PC_TEMPSAVE+CPUSAVE_DAR)(%r1)
276 stw %r31,(PC_TEMPSAVE+CPUSAVE_DSISR)(%r1)
275 stw %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DAR)(%r1)
276 stw %r31,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1)
277 mfsprg1 %r1 /* restore SP, in case of branch */
278 mflr %r28 /* save LR */
279 mfcr %r29 /* save CR */
280/* Test whether we already had PR set */
281 mfsrr1 %r31
282 mtcr %r31
283 bla s_trap /* LR & 0xff00 is exception # */
284CNAME(alisize) = .-CNAME(alitrap)

--- 66 unchanged lines hidden (view full) ---

351 lwz %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1)
352 stw %r31,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
353 lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1)
354 stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
355 lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1)
356 stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1)
357 mfdar %r30
358 mfdsisr %r31
277 mfsprg1 %r1 /* restore SP, in case of branch */
278 mflr %r28 /* save LR */
279 mfcr %r29 /* save CR */
280/* Test whether we already had PR set */
281 mfsrr1 %r31
282 mtcr %r31
283 bla s_trap /* LR & 0xff00 is exception # */
284CNAME(alisize) = .-CNAME(alitrap)

--- 66 unchanged lines hidden (view full) ---

351 lwz %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1)
352 stw %r31,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
353 lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1)
354 stw %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
355 lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1)
356 stw %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1)
357 mfdar %r30
358 mfdsisr %r31
359 stw %r30,(PC_TEMPSAVE+CPUSAVE_DAR)(%r1)
360 stw %r31,(PC_TEMPSAVE+CPUSAVE_DSISR)(%r1)
359 stw %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DAR)(%r1)
360 stw %r31,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1)
361
362#ifdef KDB
363 /* Try and detect a kernel stack overflow */
364 mfsrr1 %r31
365 mtcr %r31
366 bt 17,realtrap /* branch is user mode */
367 mfsprg1 %r31 /* get old SP */
368 sub. %r30,%r31,%r30 /* SP - DAR */
369 bge 1f
370 neg %r30,%r30 /* modulo value */
3711: cmplwi %cr0,%r30,4096 /* is DAR within a page of SP? */
372 bge %cr0,realtrap /* no, too far away. */
373
374 /* Now convert this DSI into a DDB trap. */
375 GET_CPUINFO(%r1)
361
362#ifdef KDB
363 /* Try and detect a kernel stack overflow */
364 mfsrr1 %r31
365 mtcr %r31
366 bt 17,realtrap /* branch is user mode */
367 mfsprg1 %r31 /* get old SP */
368 sub. %r30,%r31,%r30 /* SP - DAR */
369 bge 1f
370 neg %r30,%r30 /* modulo value */
3711: cmplwi %cr0,%r30,4096 /* is DAR within a page of SP? */
372 bge %cr0,realtrap /* no, too far away. */
373
374 /* Now convert this DSI into a DDB trap. */
375 GET_CPUINFO(%r1)
376 lwz %r30,(PC_TEMPSAVE+CPUSAVE_DAR)(%r1) /* get DAR */
377 stw %r30,(PC_DBSAVE +CPUSAVE_DAR)(%r1) /* save DAR */
378 lwz %r30,(PC_TEMPSAVE+CPUSAVE_DSISR)(%r1) /* get DSISR */
379 lwz %r30,(PC_DBSAVE +CPUSAVE_DSISR)(%r1) /* save DSISR */
376 lwz %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DAR)(%r1) /* get DAR */
377 stw %r30,(PC_DBSAVE +CPUSAVE_AIM_DAR)(%r1) /* save DAR */
378 lwz %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1) /* get DSISR */
379 lwz %r30,(PC_DBSAVE +CPUSAVE_AIM_DSISR)(%r1) /* save DSISR */
380 lwz %r30,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* get r28 */
381 stw %r30,(PC_DBSAVE +CPUSAVE_R28)(%r1) /* save r28 */
382 lwz %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1) /* get r29 */
383 stw %r31,(PC_DBSAVE +CPUSAVE_R29)(%r1) /* save r29 */
384 lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1) /* get r30 */
385 stw %r30,(PC_DBSAVE +CPUSAVE_R30)(%r1) /* save r30 */
386 lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1) /* get r31 */
387 stw %r31,(PC_DBSAVE +CPUSAVE_R31)(%r1) /* save r31 */

--- 153 unchanged lines hidden ---
380 lwz %r30,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* get r28 */
381 stw %r30,(PC_DBSAVE +CPUSAVE_R28)(%r1) /* save r28 */
382 lwz %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1) /* get r29 */
383 stw %r31,(PC_DBSAVE +CPUSAVE_R29)(%r1) /* save r29 */
384 lwz %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1) /* get r30 */
385 stw %r30,(PC_DBSAVE +CPUSAVE_R30)(%r1) /* save r30 */
386 lwz %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1) /* get r31 */
387 stw %r31,(PC_DBSAVE +CPUSAVE_R31)(%r1) /* save r31 */

--- 153 unchanged lines hidden ---