copyin & copyout now return EFAULT on failure
[unix-history] / usr / src / sys / vax / vax / locore.s
index 74948d0..2557aab 100644 (file)
@@ -1,14 +1,17 @@
-/*     locore.s        4.72    82/10/31        */
+/*     locore.s        4.76    82/12/29        */
+
+#include "../machine/psl.h"
+#include "../machine/pte.h"
+
+#include "../h/errno.h"
 
 #include "../vax/mtpr.h"
 #include "../vax/trap.h"
 
 #include "../vax/mtpr.h"
 #include "../vax/trap.h"
-#include "../h/psl.h"
-#include "../h/pte.h"
 #include "../vax/cpu.h"
 #include "../vax/nexus.h"
 #include "../vax/cpu.h"
 #include "../vax/nexus.h"
-#include "../vaxuba/ubareg.h"
 #include "../vax/cons.h"
 #include "../vax/clock.h"
 #include "../vax/cons.h"
 #include "../vax/clock.h"
+#include "../vaxuba/ubareg.h"
 
 #include "dz.h"
 #include "mba.h"
 
 #include "dz.h"
 #include "mba.h"
@@ -334,7 +337,7 @@ alltraps:
        rei
 
 SCBVEC(syscall):
        rei
 
 SCBVEC(syscall):
-       pushl   $SYSCALL
+       pushl   $T_SYSCALL
        mfpr    $USP,-(sp); calls $0,_syscall; mtpr (sp)+,$USP
        incl    _cnt+V_SYSCALL
        addl2   $8,sp                   # pop type, code
        mfpr    $USP,-(sp); calls $0,_syscall; mtpr (sp)+,$USP
        incl    _cnt+V_SYSCALL
        addl2   $8,sp                   # pop type, code
@@ -559,6 +562,31 @@ _badaddr:
        movab   2b,(sp)
        rei
 
        movab   2b,(sp)
        rei
 
+_addupc:       .globl  _addupc
+       .word   0x0
+       movl    8(ap),r2                # &u.u_prof
+       subl3   8(r2),4(ap),r0          # corrected pc
+       blss    9f
+       extzv   $1,$31,r0,r0            # logical right shift
+       extzv   $1,$31,12(r2),r1        # ditto for scale
+       emul    r1,r0,$0,r0
+       ashq    $-14,r0,r0
+       tstl    r1
+       bneq    9f
+       incl    r0
+       bicl2   $1,r0
+       cmpl    r0,4(r2)                # length
+       bgequ   9f
+       addl2   (r2),r0                 # base
+       probew  $3,$2,(r0)
+       beql    8f
+       addw2   12(ap),(r0)
+9:
+       ret
+8:
+       clrl    12(r2)
+       ret
+
 _Copyin:       .globl  _Copyin         # <<<massaged for jsb by asm.sed>>>
        movl    12(sp),r0               # copy length
        blss    ersb
 _Copyin:       .globl  _Copyin         # <<<massaged for jsb by asm.sed>>>
        movl    12(sp),r0               # copy length
        blss    ersb
@@ -588,7 +616,7 @@ cishort:
        rsb
 
 ersb:
        rsb
 
 ersb:
-       mnegl   $1,r0
+       movl    $EFAULT,r0
        rsb
 
 _Copyout:      .globl  _Copyout        # <<<massaged for jsb by asm.sed >>>
        rsb
 
 _Copyout:      .globl  _Copyout        # <<<massaged for jsb by asm.sed >>>