add fuswintr and suswintr
authorChris Torek <torek@ucbvax.Berkeley.EDU>
Wed, 1 Jul 1992 04:28:41 +0000 (20:28 -0800)
committerChris Torek <torek@ucbvax.Berkeley.EDU>
Wed, 1 Jul 1992 04:28:41 +0000 (20:28 -0800)
SCCS-vsn: sys/hp300/hp300/locore.s 7.15

usr/src/sys/hp300/hp300/locore.s

index 7e9eaa4..d02fe08 100644 (file)
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: locore.s 1.62 92/01/20$
  *
  *
  * from: Utah $Hdr: locore.s 1.62 92/01/20$
  *
- *     @(#)locore.s    7.14 (Berkeley) %G%
+ *     @(#)locore.s    7.15 (Berkeley) %G%
  */
 
 #include "assym.s"
  */
 
 #include "assym.s"
@@ -1547,7 +1547,7 @@ Lbadsw:
  * user's PTEs have been changed (formerly denoted by the SPTECHG p_flag
  * bit).  For now, we just always flush the full ATC.
  */
  * user's PTEs have been changed (formerly denoted by the SPTECHG p_flag
  * bit).  For now, we just always flush the full ATC.
  */
-ENTRY(swtch)
+ENTRY(Swtch)
        movl    _curpcb,a0              | current pcb
        movw    sr,a0@(PCB_PS)          | save sr before changing ipl
 #ifdef notyet
        movl    _curpcb,a0              | current pcb
        movw    sr,a0@(PCB_PS)          | save sr before changing ipl
 #ifdef notyet
@@ -1555,6 +1555,7 @@ ENTRY(swtch)
 #endif
        clrl    _curproc
        addql   #1,_cnt+V_SWTCH
 #endif
        clrl    _curproc
        addql   #1,_cnt+V_SWTCH
+
 Lsw1:
        /*
         * Find the highest-priority queue that isn't empty,
 Lsw1:
        /*
         * Find the highest-priority queue that isn't empty,
@@ -1812,6 +1813,16 @@ ENTRY(fusword)
        nop
        jra     Lfsdone
 
        nop
        jra     Lfsdone
 
+/* Just like fusword, but tells trap code not to page in. */
+ENTRY(fuswintr)
+       movl    sp@(4),a0
+       movl    _curpcb,a1
+       movl    #_fswintr,a1@(PCB_ONFAULT)
+       moveq   #0,d0
+       movsw   a0@,d0
+       nop
+       jra     Lfsdone
+
 ALTENTRY(fuibyte, _fubyte)
 ENTRY(fubyte)
        movl    sp@(4),a0               | address to read
 ALTENTRY(fuibyte, _fubyte)
 ENTRY(fubyte)
        movl    sp@(4),a0               | address to read
@@ -1828,6 +1839,13 @@ Lfsdone:
        clrl    a1@(PCB_ONFAULT)        | clear fault address
        rts
 
        clrl    a1@(PCB_ONFAULT)        | clear fault address
        rts
 
+/* Just like Lfserr, but the address is different (& exported). */
+       .globl  _fswintr
+_fswintr:
+       moveq   #-1,d0
+       jra     Lfsdone
+
+
 /*
  * Write a longword in user instruction space.
  * Largely the same as suword but with a final i-cache purge on those
 /*
  * Write a longword in user instruction space.
  * Largely the same as suword but with a final i-cache purge on those
@@ -1872,6 +1890,16 @@ ENTRY(susword)
        moveq   #0,d0                   | indicate no fault
        jra     Lfsdone
 
        moveq   #0,d0                   | indicate no fault
        jra     Lfsdone
 
+ENTRY(suswintr)
+       movl    sp@(4),a0
+       movw    sp@(10),d0
+       movl    _curpcb,a1
+       movl    #_fswintr,a1@(PCB_ONFAULT)
+       movsw   d0,a0@
+       nop
+       moveq   #0,d0
+       jra     Lfsdone
+
 ALTENTRY(suibyte, _subyte)
 ENTRY(subyte)
        movl    sp@(4),a0               | address to write
 ALTENTRY(suibyte, _subyte)
 ENTRY(subyte)
        movl    sp@(4),a0               | address to write