diff options
author | Grant Grundler <grundler@parisc-linux.org> | 2005-10-21 22:40:07 -0400 |
---|---|---|
committer | Kyle McMartin <kyle@parisc-linux.org> | 2005-10-21 22:40:07 -0400 |
commit | 896a375623c3643a3f189353e7d4828c48a7fdf8 (patch) | |
tree | bb79535f843110f9b2b199890157fcabb0504b43 /include/asm-parisc/assembly.h | |
parent | b2c1fe81df7471de9f7e2918877ac04ec9cde35f (diff) |
[PARISC] Make sure use of RFI conforms to PA 2.0 and 1.1 arch docs
2.6.12-rc4-pa3 : first pass at making sure use of RFI conforms to
PA 2.0 arch pages F-4 and F-5, PA 1.1 Arch page 3-19 and 3-20.
The discussion revolves around all the rules for clearing PSW Q-bit.
The hard part is meeting all the rules for "relied upon translation".
.align directive is used to guarantee the critical sequence ends more than
8 instructions (32 bytes) from the end of page.
Signed-off-by: Grant Grundler <grundler@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'include/asm-parisc/assembly.h')
-rw-r--r-- | include/asm-parisc/assembly.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 30b023411fef..b24a99e3ef9c 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
@@ -450,5 +450,30 @@ | |||
450 | REST_CR (%cr22, PT_PSW (\regs)) | 450 | REST_CR (%cr22, PT_PSW (\regs)) |
451 | .endm | 451 | .endm |
452 | 452 | ||
453 | |||
454 | /* First step to create a "relied upon translation" | ||
455 | * See PA 2.0 Arch. page F-4 and F-5. | ||
456 | * | ||
457 | * The ssm was originally necessary due to a "PCxT bug". | ||
458 | * But someone decided it needed to be added to the architecture | ||
459 | * and this "feature" went into rev3 of PA-RISC 1.1 Arch Manual. | ||
460 | * It's been carried forward into PA 2.0 Arch as well. :^( | ||
461 | * | ||
462 | * "ssm 0,%r0" is a NOP with side effects (prefetch barrier). | ||
463 | * rsm/ssm prevents the ifetch unit from speculatively fetching | ||
464 | * instructions past this line in the code stream. | ||
465 | * PA 2.0 processor will single step all insn in the same QUAD (4 insn). | ||
466 | */ | ||
467 | .macro pcxt_ssm_bug | ||
468 | rsm PSW_SM_I,%r0 | ||
469 | nop /* 1 */ | ||
470 | nop /* 2 */ | ||
471 | nop /* 3 */ | ||
472 | nop /* 4 */ | ||
473 | nop /* 5 */ | ||
474 | nop /* 6 */ | ||
475 | nop /* 7 */ | ||
476 | .endm | ||
477 | |||
453 | #endif /* __ASSEMBLY__ */ | 478 | #endif /* __ASSEMBLY__ */ |
454 | #endif | 479 | #endif |