aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel/real2.S
diff options
context:
space:
mode:
authorGrant Grundler <grundler@parisc-linux.org>2005-10-21 22:40:07 -0400
committerKyle McMartin <kyle@parisc-linux.org>2005-10-21 22:40:07 -0400
commit896a375623c3643a3f189353e7d4828c48a7fdf8 (patch)
treebb79535f843110f9b2b199890157fcabb0504b43 /arch/parisc/kernel/real2.S
parentb2c1fe81df7471de9f7e2918877ac04ec9cde35f (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 'arch/parisc/kernel/real2.S')
-rw-r--r--arch/parisc/kernel/real2.S18
1 files changed, 6 insertions, 12 deletions
diff --git a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S
index 8dd5defb7316..2310fc1b06a9 100644
--- a/arch/parisc/kernel/real2.S
+++ b/arch/parisc/kernel/real2.S
@@ -7,8 +7,8 @@
7 * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com) 7 * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com)
8 * 8 *
9 */ 9 */
10#include <asm/assembly.h>
11#include <asm/psw.h> 10#include <asm/psw.h>
11#include <asm/assembly.h>
12 12
13 .section .bss 13 .section .bss
14 .export real_stack 14 .export real_stack
@@ -147,20 +147,17 @@ restore_control_regs:
147 .text 147 .text
148rfi_virt2real: 148rfi_virt2real:
149 /* switch to real mode... */ 149 /* switch to real mode... */
150 ssm 0,0 /* See "relied upon translation" */ 150 rsm PSW_SM_I,%r0
151 nop /* PA 2.0 Arch. F-5 */ 151 load32 PA(rfi_v2r_1), %r1
152 nop
153 nop
154 nop 152 nop
155 nop 153 nop
156 nop 154 nop
157 nop 155 nop
158 nop 156 nop
159 157
160 rsm (PSW_SM_Q|PSW_SM_I),%r0 /* disable Q & I bits to load iia queue */ 158 rsm PSW_SM_Q,%r0 /* disable Q & I bits to load iia queue */
161 mtctl %r0, %cr17 /* Clear IIASQ tail */ 159 mtctl %r0, %cr17 /* Clear IIASQ tail */
162 mtctl %r0, %cr17 /* Clear IIASQ head */ 160 mtctl %r0, %cr17 /* Clear IIASQ head */
163 load32 PA(rfi_v2r_1), %r1
164 mtctl %r1, %cr18 /* IIAOQ head */ 161 mtctl %r1, %cr18 /* IIAOQ head */
165 ldo 4(%r1), %r1 162 ldo 4(%r1), %r1
166 mtctl %r1, %cr18 /* IIAOQ tail */ 163 mtctl %r1, %cr18 /* IIAOQ tail */
@@ -184,10 +181,8 @@ rfi_v2r_1:
184 .text 181 .text
185 .align 128 182 .align 128
186rfi_real2virt: 183rfi_real2virt:
187 ssm 0,0 /* See "relied upon translation" */ 184 rsm PSW_SM_I,%r0
188 nop /* PA 2.0 Arch. F-5 */ 185 load32 (rfi_r2v_1), %r1
189 nop
190 nop
191 nop 186 nop
192 nop 187 nop
193 nop 188 nop
@@ -197,7 +192,6 @@ rfi_real2virt:
197 rsm PSW_SM_Q,%r0 /* disable Q bit to load iia queue */ 192 rsm PSW_SM_Q,%r0 /* disable Q bit to load iia queue */
198 mtctl %r0, %cr17 /* Clear IIASQ tail */ 193 mtctl %r0, %cr17 /* Clear IIASQ tail */
199 mtctl %r0, %cr17 /* Clear IIASQ head */ 194 mtctl %r0, %cr17 /* Clear IIASQ head */
200 load32 (rfi_r2v_1), %r1
201 mtctl %r1, %cr18 /* IIAOQ head */ 195 mtctl %r1, %cr18 /* IIAOQ head */
202 ldo 4(%r1), %r1 196 ldo 4(%r1), %r1
203 mtctl %r1, %cr18 /* IIAOQ tail */ 197 mtctl %r1, %cr18 /* IIAOQ tail */