|
32 | 32 | */
|
33 | 33 | #define THREAD_NORMSAVE(offset) (THREAD_NORMSAVES + (offset * 4))
|
34 | 34 |
|
| 35 | +#ifdef CONFIG_PPC_FSL_BOOK3E |
| 36 | +#define BOOKE_CLEAR_BTB(reg) \ |
| 37 | +START_BTB_FLUSH_SECTION \ |
| 38 | + BTB_FLUSH(reg) \ |
| 39 | +END_BTB_FLUSH_SECTION |
| 40 | +#else |
| 41 | +#define BOOKE_CLEAR_BTB(reg) |
| 42 | +#endif |
| 43 | + |
| 44 | + |
35 | 45 | #define NORMAL_EXCEPTION_PROLOG(intno) \
|
36 | 46 | mtspr SPRN_SPRG_WSCRATCH0, r10; /* save one register */ \
|
37 | 47 | mfspr r10, SPRN_SPRG_THREAD; \
|
|
43 | 53 | andi. r11, r11, MSR_PR; /* check whether user or kernel */\
|
44 | 54 | mr r11, r1; \
|
45 | 55 | beq 1f; \
|
46 |
| -START_BTB_FLUSH_SECTION \ |
47 |
| - BTB_FLUSH(r11) \ |
48 |
| -END_BTB_FLUSH_SECTION \ |
| 56 | + BOOKE_CLEAR_BTB(r11) \ |
49 | 57 | /* if from user, start at top of this thread's kernel stack */ \
|
50 | 58 | lwz r11, THREAD_INFO-THREAD(r10); \
|
51 | 59 | ALLOC_STACK_FRAME(r11, THREAD_SIZE); \
|
@@ -131,9 +139,7 @@ END_BTB_FLUSH_SECTION \
|
131 | 139 | stw r9,_CCR(r8); /* save CR on stack */\
|
132 | 140 | mfspr r11,exc_level_srr1; /* check whether user or kernel */\
|
133 | 141 | DO_KVM BOOKE_INTERRUPT_##intno exc_level_srr1; \
|
134 |
| -START_BTB_FLUSH_SECTION \ |
135 |
| - BTB_FLUSH(r10) \ |
136 |
| -END_BTB_FLUSH_SECTION \ |
| 142 | + BOOKE_CLEAR_BTB(r10) \ |
137 | 143 | andi. r11,r11,MSR_PR; \
|
138 | 144 | mfspr r11,SPRN_SPRG_THREAD; /* if from user, start at top of */\
|
139 | 145 | lwz r11,THREAD_INFO-THREAD(r11); /* this thread's kernel stack */\
|
|
0 commit comments