diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-03-02 21:30:03 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-03-02 21:30:03 -0500 |
commit | 652e8f8d579d61745094e36b4ff085026a332e73 (patch) | |
tree | 44145576f9cdf0b777dee0d0961f5499ea88bec8 /arch/powerpc/kernel/head_booke.h | |
parent | 501cb16d3cfdcca99ac26fe122079f2a43b046b8 (diff) | |
parent | 6c7120902305b3a21460cd2f0f917a39307df566 (diff) |
Merge commit 'jwb/next' into next
Diffstat (limited to 'arch/powerpc/kernel/head_booke.h')
-rw-r--r-- | arch/powerpc/kernel/head_booke.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h index 38e242eb0ef8..95f39f1e68d4 100644 --- a/arch/powerpc/kernel/head_booke.h +++ b/arch/powerpc/kernel/head_booke.h | |||
@@ -10,6 +10,15 @@ | |||
10 | mtspr SPRN_IVOR##vector_number,r26; \ | 10 | mtspr SPRN_IVOR##vector_number,r26; \ |
11 | sync | 11 | sync |
12 | 12 | ||
13 | #if (THREAD_SHIFT < 15) | ||
14 | #define ALLOC_STACK_FRAME(reg, val) \ | ||
15 | addi reg,reg,val | ||
16 | #else | ||
17 | #define ALLOC_STACK_FRAME(reg, val) \ | ||
18 | addis reg,reg,val@ha; \ | ||
19 | addi reg,reg,val@l | ||
20 | #endif | ||
21 | |||
13 | #define NORMAL_EXCEPTION_PROLOG \ | 22 | #define NORMAL_EXCEPTION_PROLOG \ |
14 | mtspr SPRN_SPRG0,r10; /* save two registers to work with */\ | 23 | mtspr SPRN_SPRG0,r10; /* save two registers to work with */\ |
15 | mtspr SPRN_SPRG1,r11; \ | 24 | mtspr SPRN_SPRG1,r11; \ |
@@ -20,7 +29,7 @@ | |||
20 | beq 1f; \ | 29 | beq 1f; \ |
21 | mfspr r1,SPRN_SPRG3; /* if from user, start at top of */\ | 30 | mfspr r1,SPRN_SPRG3; /* if from user, start at top of */\ |
22 | lwz r1,THREAD_INFO-THREAD(r1); /* this thread's kernel stack */\ | 31 | lwz r1,THREAD_INFO-THREAD(r1); /* this thread's kernel stack */\ |
23 | addi r1,r1,THREAD_SIZE; \ | 32 | ALLOC_STACK_FRAME(r1, THREAD_SIZE); \ |
24 | 1: subi r1,r1,INT_FRAME_SIZE; /* Allocate an exception frame */\ | 33 | 1: subi r1,r1,INT_FRAME_SIZE; /* Allocate an exception frame */\ |
25 | mr r11,r1; \ | 34 | mr r11,r1; \ |
26 | stw r10,_CCR(r11); /* save various registers */\ | 35 | stw r10,_CCR(r11); /* save various registers */\ |