@@ -71,6 +71,10 @@
lwsync; \
END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1)
#define PPC476_ERR_MTPID PPC476_ERR_DCBx
+#define PPC476_ERR_DCI() \
+ BEGIN_FTR_SECTION; \
+ dci; \
+ END_FTR_SECTION_IFSET(CPU_FTR_476_DD1)
#define PPC476_ERR_ISYNC() \
BEGIN_FTR_SECTION; \
isync; \
@@ -78,6 +82,7 @@
#else /* ! CONFIG_PPC_47x */
#define PPC476_ERR_DCBx()
#define PPC476_ERR_MTPID()
+#define PPC476_ERR_DCI()
#define PPC476_ERR_ISYNC()
#endif /* CONFIG_PPC_47x */
@@ -175,12 +175,14 @@ label: \
#define EXCEPTION(n, label, hdlr, xfer) \
START_EXCEPTION(label); \
+ PPC476_ERR_DCI(); \
NORMAL_EXCEPTION_PROLOG; \
addi r3,r1,STACK_FRAME_OVERHEAD; \
xfer(n, hdlr)
#define CRITICAL_EXCEPTION(n, label, hdlr) \
START_EXCEPTION(label); \
+ PPC476_ERR_DCI(); \
CRITICAL_EXCEPTION_PROLOG; \
addi r3,r1,STACK_FRAME_OVERHEAD; \
EXC_XFER_TEMPLATE(hdlr, n+2, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \
@@ -380,6 +382,7 @@ label: \
#define DECREMENTER_EXCEPTION \
START_EXCEPTION(Decrementer) \
+ PPC476_ERR_DCI(); \
NORMAL_EXCEPTION_PROLOG; \
lis r0,TSR_DIS@h; /* Setup the DEC interrupt mask */ \
mtspr SPRN_TSR,r0; /* Clear the DEC interrupt */ \