Massive cleanup of SPARC kernel entry code
[akaros.git] / kern / arch / sparc / entry.S
index d97d45e..371214f 100644 (file)
@@ -36,7 +36,7 @@ _start:
        // compute NWINDOWS
 
        mov     0,%wim                          ! mark all windows valid
-       mov (PSR_S|PSR_PS),%psr ! CWP = 0
+       mov (PSR_PIL|PSR_S|PSR_PS),%psr ! CWP = 0
        nop; nop; nop                   ! 3 insns between write -> read state reg
        save                                    ! CWP = (CWP-1) % NWINDOWS = NWINDOWS-1
        mov     %psr,%g2
@@ -58,6 +58,13 @@ _start:
        st      %g3,[%g1]
        flush   %g1
 
+       // and patch the trap entry point.
+       set     RELOC(trap_patchme),%g1
+       ld      [%g1],%g3
+       or      %g2,%g3,%g3
+       st      %g3,[%g1]
+       flush   %g1
+
        // store NWINDOWS away for safekeeping
        set     RELOC(NWINDOWS),%g1
        inc     %g2