diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2012-05-25 17:20:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-28 02:52:49 -0400 |
commit | 1ec8cf62338b950fdbf76bbdfa3064bc1c0b7a81 (patch) | |
tree | 38209aea44a013707f2530802cefd233afcf0f81 /arch/sparc/kernel/etrap_32.S | |
parent | 080f88837b489ff53c9ca62bc3adefdf74eb61e8 (diff) |
sparc32: introduce support for run-time patching for all shared assembler code
All users of MMUREGS ASI in kernel/ now uses run-time patching.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Daniel Hellstrom <daniel@gaisler.com>
Cc: Konrad Eisele <konrad@gaisler.com>
Diffstat (limited to 'arch/sparc/kernel/etrap_32.S')
-rw-r--r-- | arch/sparc/kernel/etrap_32.S | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/arch/sparc/kernel/etrap_32.S b/arch/sparc/kernel/etrap_32.S index 84b5f0d2afde..e3e80d65e39a 100644 --- a/arch/sparc/kernel/etrap_32.S +++ b/arch/sparc/kernel/etrap_32.S | |||
@@ -234,7 +234,8 @@ tsetup_srmmu_stackchk: | |||
234 | 234 | ||
235 | cmp %glob_tmp, %sp | 235 | cmp %glob_tmp, %sp |
236 | bleu,a 1f | 236 | bleu,a 1f |
237 | lda [%g0] ASI_M_MMUREGS, %glob_tmp ! read MMU control | 237 | LEON_PI( lda [%g0] ASI_LEON_MMUREGS, %glob_tmp) ! read MMU control |
238 | SUN_PI_( lda [%g0] ASI_M_MMUREGS, %glob_tmp) ! read MMU control | ||
238 | 239 | ||
239 | trap_setup_user_stack_is_bolixed: | 240 | trap_setup_user_stack_is_bolixed: |
240 | /* From user/kernel into invalid window w/bad user | 241 | /* From user/kernel into invalid window w/bad user |
@@ -249,18 +250,25 @@ trap_setup_user_stack_is_bolixed: | |||
249 | 1: | 250 | 1: |
250 | /* Clear the fault status and turn on the no_fault bit. */ | 251 | /* Clear the fault status and turn on the no_fault bit. */ |
251 | or %glob_tmp, 0x2, %glob_tmp ! or in no_fault bit | 252 | or %glob_tmp, 0x2, %glob_tmp ! or in no_fault bit |
252 | sta %glob_tmp, [%g0] ASI_M_MMUREGS ! set it | 253 | LEON_PI(sta %glob_tmp, [%g0] ASI_LEON_MMUREGS) ! set it |
254 | SUN_PI_(sta %glob_tmp, [%g0] ASI_M_MMUREGS) ! set it | ||
253 | 255 | ||
254 | /* Dump the registers and cross fingers. */ | 256 | /* Dump the registers and cross fingers. */ |
255 | STORE_WINDOW(sp) | 257 | STORE_WINDOW(sp) |
256 | 258 | ||
257 | /* Clear the no_fault bit and check the status. */ | 259 | /* Clear the no_fault bit and check the status. */ |
258 | andn %glob_tmp, 0x2, %glob_tmp | 260 | andn %glob_tmp, 0x2, %glob_tmp |
259 | sta %glob_tmp, [%g0] ASI_M_MMUREGS | 261 | LEON_PI(sta %glob_tmp, [%g0] ASI_LEON_MMUREGS) |
262 | SUN_PI_(sta %glob_tmp, [%g0] ASI_M_MMUREGS) | ||
263 | |||
260 | mov AC_M_SFAR, %glob_tmp | 264 | mov AC_M_SFAR, %glob_tmp |
261 | lda [%glob_tmp] ASI_M_MMUREGS, %g0 | 265 | LEON_PI(lda [%glob_tmp] ASI_LEON_MMUREGS, %g0) |
266 | SUN_PI_(lda [%glob_tmp] ASI_M_MMUREGS, %g0) | ||
267 | |||
262 | mov AC_M_SFSR, %glob_tmp | 268 | mov AC_M_SFSR, %glob_tmp |
263 | lda [%glob_tmp] ASI_M_MMUREGS, %glob_tmp ! save away status of winstore | 269 | LEON_PI(lda [%glob_tmp] ASI_LEON_MMUREGS, %glob_tmp)! save away status of winstore |
270 | SUN_PI_(lda [%glob_tmp] ASI_M_MMUREGS, %glob_tmp) ! save away status of winstore | ||
271 | |||
264 | andcc %glob_tmp, 0x2, %g0 ! did we fault? | 272 | andcc %glob_tmp, 0x2, %g0 ! did we fault? |
265 | bne trap_setup_user_stack_is_bolixed ! failure | 273 | bne trap_setup_user_stack_is_bolixed ! failure |
266 | nop | 274 | nop |