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>
This commit is contained in:

committed by
David S. Miller

parent
080f88837b
commit
1ec8cf6233
@@ -332,24 +332,30 @@ spwin_srmmu_stackchk:
|
||||
mov AC_M_SFSR, %glob_tmp
|
||||
|
||||
/* Clear the fault status and turn on the no_fault bit. */
|
||||
lda [%glob_tmp] ASI_M_MMUREGS, %g0 ! eat SFSR
|
||||
LEON_PI(lda [%glob_tmp] ASI_LEON_MMUREGS, %g0) ! eat SFSR
|
||||
SUN_PI_(lda [%glob_tmp] ASI_M_MMUREGS, %g0) ! eat SFSR
|
||||
|
||||
lda [%g0] ASI_M_MMUREGS, %glob_tmp ! read MMU control
|
||||
LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %glob_tmp) ! read MMU control
|
||||
SUN_PI_(lda [%g0] ASI_M_MMUREGS, %glob_tmp) ! read MMU control
|
||||
or %glob_tmp, 0x2, %glob_tmp ! or in no_fault bit
|
||||
sta %glob_tmp, [%g0] ASI_M_MMUREGS ! set it
|
||||
LEON_PI(sta %glob_tmp, [%g0] ASI_LEON_MMUREGS) ! set it
|
||||
SUN_PI_(sta %glob_tmp, [%g0] ASI_M_MMUREGS) ! set it
|
||||
|
||||
/* Dump the registers and cross fingers. */
|
||||
STORE_WINDOW(sp)
|
||||
|
||||
/* Clear the no_fault bit and check the status. */
|
||||
andn %glob_tmp, 0x2, %glob_tmp
|
||||
sta %glob_tmp, [%g0] ASI_M_MMUREGS
|
||||
LEON_PI(sta %glob_tmp, [%g0] ASI_LEON_MMUREGS)
|
||||
SUN_PI_(sta %glob_tmp, [%g0] ASI_M_MMUREGS)
|
||||
|
||||
mov AC_M_SFAR, %glob_tmp
|
||||
lda [%glob_tmp] ASI_M_MMUREGS, %g0
|
||||
LEON_PI(lda [%glob_tmp] ASI_LEON_MMUREGS, %g0)
|
||||
SUN_PI_(lda [%glob_tmp] ASI_M_MMUREGS, %g0)
|
||||
|
||||
mov AC_M_SFSR, %glob_tmp
|
||||
lda [%glob_tmp] ASI_M_MMUREGS, %glob_tmp
|
||||
LEON_PI(lda [%glob_tmp] ASI_LEON_MMUREGS, %glob_tmp)
|
||||
SUN_PI_(lda [%glob_tmp] ASI_M_MMUREGS, %glob_tmp)
|
||||
andcc %glob_tmp, 0x2, %g0 ! did we fault?
|
||||
be,a spwin_finish_up + 0x4 ! cool beans, success
|
||||
restore %g0, %g0, %g0
|
||||
|
Reference in New Issue
Block a user