|
@@ -254,16 +254,19 @@ srmmu_fwin_stackchk:
|
|
|
mov AC_M_SFSR, %l4
|
|
|
cmp %l5, %sp
|
|
|
bleu fwin_user_stack_is_bolixed
|
|
|
- lda [%l4] ASI_M_MMUREGS, %g0 ! clear fault status
|
|
|
+LEON_PI( lda [%l4] ASI_LEON_MMUREGS, %g0) ! clear fault status
|
|
|
+SUN_PI_( lda [%l4] ASI_M_MMUREGS, %g0) ! clear fault status
|
|
|
|
|
|
/* The technique is, turn off faults on this processor,
|
|
|
* just let the load rip, then check the sfsr to see if
|
|
|
* a fault did occur. Then we turn on fault traps again
|
|
|
* and branch conditionally based upon what happened.
|
|
|
*/
|
|
|
- lda [%g0] ASI_M_MMUREGS, %l5 ! read mmu-ctrl reg
|
|
|
+LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %l5) ! read mmu-ctrl reg
|
|
|
+SUN_PI_(lda [%g0] ASI_M_MMUREGS, %l5) ! read mmu-ctrl reg
|
|
|
or %l5, 0x2, %l5 ! turn on no-fault bit
|
|
|
- sta %l5, [%g0] ASI_M_MMUREGS ! store it
|
|
|
+LEON_PI(sta %l5, [%g0] ASI_LEON_MMUREGS) ! store it
|
|
|
+SUN_PI_(sta %l5, [%g0] ASI_M_MMUREGS) ! store it
|
|
|
|
|
|
/* Cross fingers and go for it. */
|
|
|
LOAD_WINDOW(sp)
|
|
@@ -275,18 +278,22 @@ srmmu_fwin_stackchk:
|
|
|
|
|
|
/* LOCATION: Window 'T' */
|
|
|
|
|
|
- lda [%g0] ASI_M_MMUREGS, %twin_tmp1 ! load mmu-ctrl again
|
|
|
- andn %twin_tmp1, 0x2, %twin_tmp1 ! clear no-fault bit
|
|
|
- sta %twin_tmp1, [%g0] ASI_M_MMUREGS ! store it
|
|
|
+LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %twin_tmp1) ! load mmu-ctrl again
|
|
|
+SUN_PI_(lda [%g0] ASI_M_MMUREGS, %twin_tmp1) ! load mmu-ctrl again
|
|
|
+ andn %twin_tmp1, 0x2, %twin_tmp1 ! clear no-fault bit
|
|
|
+LEON_PI(sta %twin_tmp1, [%g0] ASI_LEON_MMUREGS) ! store it
|
|
|
+SUN_PI_(sta %twin_tmp1, [%g0] ASI_M_MMUREGS) ! store it
|
|
|
|
|
|
mov AC_M_SFAR, %twin_tmp2
|
|
|
- lda [%twin_tmp2] ASI_M_MMUREGS, %g0 ! read fault address
|
|
|
+LEON_PI(lda [%twin_tmp2] ASI_LEON_MMUREGS, %g0) ! read fault address
|
|
|
+SUN_PI_(lda [%twin_tmp2] ASI_M_MMUREGS, %g0) ! read fault address
|
|
|
|
|
|
mov AC_M_SFSR, %twin_tmp2
|
|
|
- lda [%twin_tmp2] ASI_M_MMUREGS, %twin_tmp2 ! read fault status
|
|
|
- andcc %twin_tmp2, 0x2, %g0 ! did fault occur?
|
|
|
+LEON_PI(lda [%twin_tmp2] ASI_LEON_MMUREGS, %twin_tmp2) ! read fault status
|
|
|
+SUN_PI_(lda [%twin_tmp2] ASI_M_MMUREGS, %twin_tmp2) ! read fault status
|
|
|
+ andcc %twin_tmp2, 0x2, %g0 ! did fault occur?
|
|
|
|
|
|
- bne 1f ! yep, cleanup
|
|
|
+ bne 1f ! yep, cleanup
|
|
|
nop
|
|
|
|
|
|
wr %t_psr, 0x0, %psr
|