summaryrefslogtreecommitdiffstats
path: root/src/kernel/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/start.S')
-rw-r--r--src/kernel/start.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/kernel/start.S b/src/kernel/start.S
index 790281305..b6f09d40e 100644
--- a/src/kernel/start.S
+++ b/src/kernel/start.S
@@ -707,6 +707,14 @@ system_call_fast_path:
;// Compare was already done in system call path.
bne cr0, 2f
mfspr r3, HMER
+ ;// Do XSCOM workaround for Errata HW822317.
+ ;// If the done bit (10) is on in HMER, it could take another cycle
+ ;// for any error status to show up. Perform another HMER read.
+ rldicr. r0, r3, 10, 0
+ beq cr0, 1f ;// Done bit not set, jump to exit.
+ mfspr r0, HMER ;// Read HMER again and OR results.
+ or r3, r3, r0
+ ;// --- end workaround HW822317
b 1f ;// Jump to exit point.
;// Check if this is HMER write (0x801).
2:
OpenPOWER on IntegriCloud