|
@@ -104,10 +104,11 @@
|
|
|
beq- 1f; \
|
|
|
ld r1,PACAKSAVE(r13); /* kernel stack to use */ \
|
|
|
1: cmpdi cr1,r1,0; /* check if r1 is in userspace */ \
|
|
|
- bge- cr1,2f; /* abort if it is */ \
|
|
|
- b 3f; \
|
|
|
-2: li r1,(n); /* will be reloaded later */ \
|
|
|
+ blt+ cr1,3f; /* abort if it is */ \
|
|
|
+ li r1,(n); /* will be reloaded later */ \
|
|
|
sth r1,PACA_TRAP_SAVE(r13); \
|
|
|
+ std r3,area+EX_R3(r13); \
|
|
|
+ addi r3,r13,area; /* r3 -> where regs are saved*/ \
|
|
|
b bad_stack; \
|
|
|
3: std r9,_CCR(r1); /* save CR in stackframe */ \
|
|
|
std r11,_NIP(r1); /* save SRR0 in stackframe */ \
|