Initial revision
This commit is contained in:
parent
2d8dcaa2df
commit
8d87404836
70 changed files with 1691 additions and 0 deletions
mach/vax4/libem
aar4.sadf.sadi.sand.sass.sbls.scff.scfi.scfu.scif.scii.scmand.scmf.scmi.scms.scmu.scom.scsa4.scsb4.scsx.scuf.scui.scuu.sdus.sdvf.sdvi.sdvu.sdvu4.sexg.sfat.sfef.sfif.sgto.sinn.sior.slar4.slos.slpb.slxa.slxl.smlf.smli.smon.sngf.sngi.snop.sprint.srck.srck4.srmi.srmu.srmu4.srol.sror.ssar4.ssbf.ssbi.ssbs.sset.ssig.ssim.ssli.ssri.ssru.sstrhp.sstrlb.ssts.strp.sxar.sxor.s
11
mach/vax4/libem/aar4.s
Normal file
11
mach/vax4/libem/aar4.s
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .aar4
|
||||||
|
|
||||||
|
.aar4:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl (sp)+,r0
|
||||||
|
movl 8(r0),r1 # elementsize in r1
|
||||||
|
subl3 (r0),(sp)+,r0
|
||||||
|
mull2 r1,r0
|
||||||
|
addl2 (sp)+,r0
|
||||||
|
jmp (r2)
|
19
mach/vax4/libem/adf.s
Normal file
19
mach/vax4/libem/adf.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .adf
|
||||||
|
|
||||||
|
.adf:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
addf2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
addd2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
14
mach/vax4/libem/adi.s
Normal file
14
mach/vax4/libem/adi.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .adi
|
||||||
|
|
||||||
|
.adi:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
addl2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
13
mach/vax4/libem/and.s
Normal file
13
mach/vax4/libem/and.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .and
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.and:
|
||||||
|
movl (sp)+,r3
|
||||||
|
addl3 r0,sp,r1
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L1:
|
||||||
|
mcoml (sp)+,r2
|
||||||
|
bicl2 r2,(r1)+
|
||||||
|
sobgtr r0,L1
|
||||||
|
jmp (r3)
|
15
mach/vax4/libem/ass.s
Normal file
15
mach/vax4/libem/ass.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .ass
|
||||||
|
|
||||||
|
.ass:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0
|
||||||
|
addl2 r0,sp
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
28
mach/vax4/libem/bls.s
Normal file
28
mach/vax4/libem/bls.s
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .bls
|
||||||
|
|
||||||
|
.bls:
|
||||||
|
movl (sp)+,r3
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0 # number of bytes in r0
|
||||||
|
movl (sp)+,r1 # addresses in r1, r2
|
||||||
|
movl (sp)+,r2
|
||||||
|
blbc r0,L1
|
||||||
|
movb (r2)+,(r1)+
|
||||||
|
L1:
|
||||||
|
bbc $1,r0,L2
|
||||||
|
movw (r2)+,(r1)+
|
||||||
|
L2:
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
beql L4
|
||||||
|
L3:
|
||||||
|
movl (r2)+,(r1)+
|
||||||
|
sobgtr r0,L3
|
||||||
|
L4:
|
||||||
|
jmp (r3)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
32
mach/vax4/libem/cff.s
Normal file
32
mach/vax4/libem/cff.s
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cff
|
||||||
|
|
||||||
|
.cff:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Ldtd
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lddf
|
||||||
|
jmp (r1)
|
||||||
|
Lddf:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq Lerr
|
||||||
|
cvtdf (sp)+,-(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Ldtd:
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lddd
|
||||||
|
cvtfd (sp)+,-(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lddd:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq Lerr
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
23
mach/vax4/libem/cfi.s
Normal file
23
mach/vax4/libem/cfi.s
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cfi
|
||||||
|
|
||||||
|
.cfi:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lddl
|
||||||
|
cvtfl (sp)+,-(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lddl:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq Lerr
|
||||||
|
cvtdl (sp)+,-(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
36
mach/vax4/libem/cfu.s
Normal file
36
mach/vax4/libem/cfu.s
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cfu
|
||||||
|
|
||||||
|
.cfu:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movpsl r1
|
||||||
|
bicl2 $~040,r1
|
||||||
|
bicpsw $040 # integer overflow traps must be ignored
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl (sp),$4
|
||||||
|
bneq Lddt
|
||||||
|
tstl (sp)+
|
||||||
|
tstf (sp)
|
||||||
|
bgeq L1
|
||||||
|
mnegf (sp),(sp)
|
||||||
|
L1:
|
||||||
|
cvtfl (sp)+,-(sp)
|
||||||
|
L2:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
bispsw r1 # restore trap enable bit
|
||||||
|
jmp (r2)
|
||||||
|
Lddt:
|
||||||
|
cmpl (sp)+,$8
|
||||||
|
bneq Lerr
|
||||||
|
tstd (sp)
|
||||||
|
bgeq L3
|
||||||
|
mnegd (sp),(sp)
|
||||||
|
L3:
|
||||||
|
cvtdl (sp)+,-(sp)
|
||||||
|
brb L2
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
26
mach/vax4/libem/cif.s
Normal file
26
mach/vax4/libem/cif.s
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cif
|
||||||
|
|
||||||
|
.cif:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Ldbl
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
cvtlf (sp)+,-(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Ldbl:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
cvtld (sp)+,-(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
24
mach/vax4/libem/cii.s
Normal file
24
mach/vax4/libem/cii.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cii
|
||||||
|
|
||||||
|
.cii:
|
||||||
|
movl (sp)+, r1
|
||||||
|
movl (sp)+, r0
|
||||||
|
cmpl (sp), $1
|
||||||
|
beql Lfrom1
|
||||||
|
cmpl (sp), $2
|
||||||
|
beql Lfrom2
|
||||||
|
cmpl (sp)+, $4
|
||||||
|
bgtr Lerr
|
||||||
|
jmp (r1)
|
||||||
|
Lfrom1:
|
||||||
|
cvtbw 4(sp), 4(sp)
|
||||||
|
Lfrom2:
|
||||||
|
tstl (sp)+
|
||||||
|
cvtwl (sp), (sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
13
mach/vax4/libem/cmand.s
Normal file
13
mach/vax4/libem/cmand.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .cmand
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
|
||||||
|
.cmand:
|
||||||
|
movl (sp)+,r2
|
||||||
|
addl3 r0,sp,r1
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L1:
|
||||||
|
bicl2 (sp)+,(r1)+
|
||||||
|
sobgtr r0,L1
|
||||||
|
jmp (r2)
|
29
mach/vax4/libem/cmf.s
Normal file
29
mach/vax4/libem/cmf.s
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cmf
|
||||||
|
|
||||||
|
.cmf:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
clrl r0
|
||||||
|
cmpf (sp)+,(sp)+
|
||||||
|
brb L3
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq Lerr
|
||||||
|
clrl r0
|
||||||
|
cmpd (sp)+,(sp)+
|
||||||
|
L3:
|
||||||
|
beql L2
|
||||||
|
bgtr L4
|
||||||
|
incl r0
|
||||||
|
brb L2
|
||||||
|
L4:
|
||||||
|
decl r0
|
||||||
|
L2:
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
22
mach/vax4/libem/cmi.s
Normal file
22
mach/vax4/libem/cmi.s
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cmi
|
||||||
|
|
||||||
|
.cmi:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq err
|
||||||
|
clrl r0
|
||||||
|
cmpl (sp)+,(sp)+
|
||||||
|
beql L1
|
||||||
|
bgtr L2
|
||||||
|
incl r0
|
||||||
|
brb L1
|
||||||
|
L2:
|
||||||
|
decl r0
|
||||||
|
L1:
|
||||||
|
jmp (r1)
|
||||||
|
err:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
16
mach/vax4/libem/cms.s
Normal file
16
mach/vax4/libem/cms.s
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .cms
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.cms:
|
||||||
|
movl (sp)+,r3
|
||||||
|
addl3 sp,r0,r1
|
||||||
|
addl3 r1,r0,r2
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L1:
|
||||||
|
cmpl (sp)+,(r1)+
|
||||||
|
bneq L2
|
||||||
|
sobgtr r0,L1
|
||||||
|
L2:
|
||||||
|
movl r2,sp
|
||||||
|
jmp (r3)
|
22
mach/vax4/libem/cmu.s
Normal file
22
mach/vax4/libem/cmu.s
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cmu
|
||||||
|
|
||||||
|
.cmu:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
clrl r0
|
||||||
|
cmpl (sp)+,(sp)+
|
||||||
|
beqlu L1
|
||||||
|
bgtru L2
|
||||||
|
incl r0
|
||||||
|
brb L1
|
||||||
|
L2:
|
||||||
|
decl r0
|
||||||
|
L1:
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
12
mach/vax4/libem/com.s
Normal file
12
mach/vax4/libem/com.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .com
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.com:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl sp,r1
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L1:
|
||||||
|
mcoml (r1),(r1)+
|
||||||
|
sobgtr r0,L1
|
||||||
|
jmp (r2)
|
21
mach/vax4/libem/csa4.s
Normal file
21
mach/vax4/libem/csa4.s
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .csa4
|
||||||
|
|
||||||
|
.csa4:
|
||||||
|
movl (sp)+,r0 # descriptor address
|
||||||
|
movl (sp)+,r1 # index
|
||||||
|
movl (r0)+,r2 # default
|
||||||
|
subl2 (r0)+,r1
|
||||||
|
cmpl (r0)+,r1
|
||||||
|
blssu L1
|
||||||
|
movl (r0)[r1],r1
|
||||||
|
bneq L2
|
||||||
|
L1:
|
||||||
|
movl r2,r1
|
||||||
|
bneq L2
|
||||||
|
pushl $ECASE
|
||||||
|
jmp .fat
|
||||||
|
L2:
|
||||||
|
jmp (r1)
|
29
mach/vax4/libem/csb4.s
Normal file
29
mach/vax4/libem/csb4.s
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .csb4
|
||||||
|
|
||||||
|
.csb4:
|
||||||
|
movl (sp)+,r0 # descriptor address
|
||||||
|
movl (sp)+,r1 # index
|
||||||
|
pushl r4 # Save r4
|
||||||
|
movl (r0)+,r4 # default
|
||||||
|
movl (r0)+,r2 # number of cases
|
||||||
|
L1:
|
||||||
|
decl r2
|
||||||
|
blss L2
|
||||||
|
movl (r0)+,r3
|
||||||
|
cmpl r1,r3
|
||||||
|
beql Lfound
|
||||||
|
tstl (r0)+ # useless address
|
||||||
|
brb L1
|
||||||
|
Lfound:
|
||||||
|
movl (r0)+,r4
|
||||||
|
L2:
|
||||||
|
movl r4,r0
|
||||||
|
beql a3
|
||||||
|
movl (sp)+,r4 # Restore r4
|
||||||
|
jmp (r0)
|
||||||
|
a3:
|
||||||
|
pushl $ECASE
|
||||||
|
jmp .fat
|
20
mach/vax4/libem/csx.s
Normal file
20
mach/vax4/libem/csx.s
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .csa
|
||||||
|
|
||||||
|
.csa:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lillins
|
||||||
|
jmp .csa4
|
||||||
|
|
||||||
|
.globl .csb
|
||||||
|
|
||||||
|
.csb:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lillins
|
||||||
|
jmp .csb4
|
||||||
|
|
||||||
|
Lillins:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
33
mach/vax4/libem/cuf.s
Normal file
33
mach/vax4/libem/cuf.s
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cuf
|
||||||
|
|
||||||
|
.cuf:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl (sp)+,r0
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r1,$4
|
||||||
|
bneq Lerr
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Ldld
|
||||||
|
cvtlf (sp)+,-(sp)
|
||||||
|
bgeq Lout
|
||||||
|
addf2 Ltwo32f,(sp)
|
||||||
|
Lout:
|
||||||
|
jmp (r2)
|
||||||
|
Ldld:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq Lerr
|
||||||
|
cvtld (sp)+,-(sp)
|
||||||
|
bgeq Lout
|
||||||
|
addd2 Ltwo32F,(sp)
|
||||||
|
jmp (r2)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
||||||
|
.data
|
||||||
|
Ltwo32f:
|
||||||
|
.float 0f4294967296.0
|
||||||
|
Ltwo32F:
|
||||||
|
.double 0f4294967296.0
|
24
mach/vax4/libem/cui.s
Normal file
24
mach/vax4/libem/cui.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cui
|
||||||
|
|
||||||
|
.cui:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
tstl (sp)
|
||||||
|
bgeq L1
|
||||||
|
jbr Liovfl
|
||||||
|
L1:
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
||||||
|
Liovfl:
|
||||||
|
pushl $EIOVFL
|
||||||
|
jmp .trp
|
24
mach/vax4/libem/cuu.s
Normal file
24
mach/vax4/libem/cuu.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .cuu
|
||||||
|
|
||||||
|
.cuu:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl (sp),$1
|
||||||
|
beql Lfrom1
|
||||||
|
cmpl (sp),$2
|
||||||
|
beql Lfrom2
|
||||||
|
cmpl (sp)+, $4
|
||||||
|
bneq Lerr
|
||||||
|
jmp (r1)
|
||||||
|
Lfrom1:
|
||||||
|
movzbw 4(sp), 4(sp)
|
||||||
|
Lfrom2:
|
||||||
|
tstl (sp)+
|
||||||
|
movzwl (sp), (sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
15
mach/vax4/libem/dus.s
Normal file
15
mach/vax4/libem/dus.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .dus
|
||||||
|
|
||||||
|
.dus:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0
|
||||||
|
pushl r1
|
||||||
|
jmp .dup
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
19
mach/vax4/libem/dvf.s
Normal file
19
mach/vax4/libem/dvf.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .dvf
|
||||||
|
|
||||||
|
.dvf:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
divf2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
divd2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
14
mach/vax4/libem/dvi.s
Normal file
14
mach/vax4/libem/dvi.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .dvi
|
||||||
|
|
||||||
|
.dvi:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
divl2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
12
mach/vax4/libem/dvu.s
Normal file
12
mach/vax4/libem/dvu.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .dvu
|
||||||
|
|
||||||
|
.dvu:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
jmp .dvu4
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
21
mach/vax4/libem/dvu4.s
Normal file
21
mach/vax4/libem/dvu4.s
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .dvu4
|
||||||
|
|
||||||
|
.dvu4:
|
||||||
|
movl (sp)+,r3
|
||||||
|
movl (sp)+,r2
|
||||||
|
blss L1
|
||||||
|
movl (sp)+,r0
|
||||||
|
clrl r1
|
||||||
|
ediv r2,r0,r0,r1
|
||||||
|
jmp (r3)
|
||||||
|
L1:
|
||||||
|
cmpl (sp)+,r2
|
||||||
|
bgequ L2
|
||||||
|
clrl r0
|
||||||
|
jmp (r3)
|
||||||
|
L2:
|
||||||
|
movl $1,r0
|
||||||
|
jmp (r3)
|
18
mach/vax4/libem/exg.s
Normal file
18
mach/vax4/libem/exg.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .exg
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.exg:
|
||||||
|
movl (sp)+,r3
|
||||||
|
addl3 sp,r0,r2
|
||||||
|
addl2 r0,r2
|
||||||
|
ashl $-2,r0,r1
|
||||||
|
L1:
|
||||||
|
movl -(r2),-(sp)
|
||||||
|
sobgtr r1,L1
|
||||||
|
addl3 r0,r2,r1
|
||||||
|
L2:
|
||||||
|
movw -(r2),-(r1)
|
||||||
|
sobgtr r0,L2
|
||||||
|
movl r1,sp
|
||||||
|
jmp (r3)
|
15
mach/vax4/libem/fat.s
Normal file
15
mach/vax4/libem/fat.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .fat
|
||||||
|
|
||||||
|
.fat:
|
||||||
|
pushl (sp)
|
||||||
|
jsb .trp
|
||||||
|
movl $L1,ap
|
||||||
|
movl (sp)+,6(ap)
|
||||||
|
chmk (ap)+
|
||||||
|
halt
|
||||||
|
|
||||||
|
.data
|
||||||
|
L1: .word 1
|
||||||
|
.long 1
|
||||||
|
.long 0
|
28
mach/vax4/libem/fef.s
Normal file
28
mach/vax4/libem/fef.s
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .fef
|
||||||
|
|
||||||
|
.fef:
|
||||||
|
movl (sp)+,r3
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
movf (sp)+,r0
|
||||||
|
jsb Lhulp
|
||||||
|
movf r0,-(sp)
|
||||||
|
jmp (r3)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
movd (sp)+,r0
|
||||||
|
jsb Lhulp
|
||||||
|
movd r0,-(sp)
|
||||||
|
jmp (r3)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
||||||
|
Lhulp:
|
||||||
|
extzv $7,$8,r0,r2
|
||||||
|
subl3 $128,r2,-(sp)
|
||||||
|
insv $128,$7,$8,r0
|
||||||
|
rsb
|
23
mach/vax4/libem/fif.s
Normal file
23
mach/vax4/libem/fif.s
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .fif
|
||||||
|
|
||||||
|
.fif:
|
||||||
|
movl (sp)+,r2
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
mulf3 (sp)+,(sp)+,r0
|
||||||
|
emodf r0,$0,$0f1.0,r1,-(sp)
|
||||||
|
subf3 (sp),r0,-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
muld3 (sp)+,(sp)+,r0
|
||||||
|
emodd r0,$0,$0f1.0,r0,-(sp)
|
||||||
|
subd3 (sp),r0,-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
17
mach/vax4/libem/gto.s
Normal file
17
mach/vax4/libem/gto.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .strlb
|
||||||
|
.globl .gto
|
||||||
|
# Nonlocal goto.
|
||||||
|
# On the stack is a pointer to a block containing :
|
||||||
|
# 1. the new local base (ptr+8)
|
||||||
|
# 2. the new stack pointer (ptr+4)
|
||||||
|
# 3. the new program counter (ptr)
|
||||||
|
.gto:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl 4(r2),sp # Store new stack pointer
|
||||||
|
pushl (r2) # Push target address
|
||||||
|
pushl 8(r2) # Push new local base
|
||||||
|
jsb .strlb # Store in fp, compute ap
|
||||||
|
rsb
|
18
mach/vax4/libem/inn.s
Normal file
18
mach/vax4/libem/inn.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .inn
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.inn:
|
||||||
|
movl (sp)+,r3
|
||||||
|
movl (sp)+,r1
|
||||||
|
ashl $3,r0,r2 # nr of bits in r2
|
||||||
|
cmpl r1,r2
|
||||||
|
bgequ L2
|
||||||
|
bbc r1,(sp),L2
|
||||||
|
movl $1,r1
|
||||||
|
L1:
|
||||||
|
addl2 r0,sp
|
||||||
|
jmp (r3)
|
||||||
|
L2:
|
||||||
|
clrl r1
|
||||||
|
brb L1
|
12
mach/vax4/libem/ior.s
Normal file
12
mach/vax4/libem/ior.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .ior
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.ior:
|
||||||
|
movl (sp)+,r2
|
||||||
|
addl3 r0,sp,r1
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L1:
|
||||||
|
bisl2 (sp)+,(r1)+
|
||||||
|
sobgtr r0,L1
|
||||||
|
jmp (r2)
|
26
mach/vax4/libem/lar4.s
Normal file
26
mach/vax4/libem/lar4.s
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .lar4
|
||||||
|
|
||||||
|
.lar4:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl (sp)+,r0
|
||||||
|
movl 8(r0),r1
|
||||||
|
subl2 (r0),(sp)
|
||||||
|
mull3 (sp)+,r1,r0
|
||||||
|
addl2 (sp)+,r0
|
||||||
|
addl2 r1,r0
|
||||||
|
cmpl r1,$1
|
||||||
|
bgtr L3
|
||||||
|
movzbl -(r0),-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L3:
|
||||||
|
cmpl r1,$2
|
||||||
|
bgtr L2
|
||||||
|
movzwl -(r0),-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L2:
|
||||||
|
ashl $-2,r1,r1
|
||||||
|
L1:
|
||||||
|
movl -(r0),-(sp)
|
||||||
|
sobgtr r1,L1
|
||||||
|
jmp (r2)
|
30
mach/vax4/libem/los.s
Normal file
30
mach/vax4/libem/los.s
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .los
|
||||||
|
|
||||||
|
.los:
|
||||||
|
movl (sp)+,r2
|
||||||
|
cmpl r0,$4
|
||||||
|
beql L1
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
||||||
|
L1:
|
||||||
|
movl (sp)+,r0 # nbytes in r0
|
||||||
|
movl (sp)+,r1 # address in r1
|
||||||
|
cmpl r0,$1
|
||||||
|
beql L2
|
||||||
|
cmpl r0,$2
|
||||||
|
beql L3
|
||||||
|
addl2 r0,r1
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L4:
|
||||||
|
movl -(r1),-(sp)
|
||||||
|
sobgtr r0,L4
|
||||||
|
jmp (r2)
|
||||||
|
L2:
|
||||||
|
cvtbl (r1),-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L3:
|
||||||
|
cvtwl (r1),-(sp)
|
||||||
|
jmp (r2)
|
18
mach/vax4/libem/lpb.s
Normal file
18
mach/vax4/libem/lpb.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .lpb
|
||||||
|
|
||||||
|
.lpb:
|
||||||
|
cmpl r0,fp
|
||||||
|
bneq L1
|
||||||
|
moval 4(ap),r0
|
||||||
|
rsb
|
||||||
|
L1:
|
||||||
|
movl fp,r1
|
||||||
|
L2:
|
||||||
|
cmpl 12(r1),r0
|
||||||
|
beql L3
|
||||||
|
movl 12(r1),r1
|
||||||
|
jbr L2
|
||||||
|
L3:
|
||||||
|
addl3 $4,8(r1),r0 # Argument Base = ap + 4
|
||||||
|
rsb
|
7
mach/vax4/libem/lxa.s
Normal file
7
mach/vax4/libem/lxa.s
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .lxa
|
||||||
|
|
||||||
|
.lxa:
|
||||||
|
jsb .lxl # Find local base
|
||||||
|
jsb .lpb # Convert to argument base
|
||||||
|
rsb
|
14
mach/vax4/libem/lxl.s
Normal file
14
mach/vax4/libem/lxl.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .lxl
|
||||||
|
|
||||||
|
# nlevels in r0 (>=2)
|
||||||
|
.lxl:
|
||||||
|
pushl r0
|
||||||
|
decl (sp)
|
||||||
|
movl 4(ap),r0
|
||||||
|
L1:
|
||||||
|
jsb .lpb
|
||||||
|
movl (r0),r0
|
||||||
|
sobgtr (sp),L1
|
||||||
|
tstl (sp)+
|
||||||
|
rsb
|
19
mach/vax4/libem/mlf.s
Normal file
19
mach/vax4/libem/mlf.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .mlf
|
||||||
|
|
||||||
|
.mlf:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
mulf2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
muld2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
14
mach/vax4/libem/mli.s
Normal file
14
mach/vax4/libem/mli.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .mli
|
||||||
|
|
||||||
|
.mli:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
mull2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
344
mach/vax4/libem/mon.s
Normal file
344
mach/vax4/libem/mon.s
Normal file
|
@ -0,0 +1,344 @@
|
||||||
|
# $Header$
|
||||||
|
#include "system.h"
|
||||||
|
#include "em_abs.h"
|
||||||
|
#define MOVL movl (sp)+,(ap)+
|
||||||
|
#define MOVQ movq (sp)+,(ap)+
|
||||||
|
|
||||||
|
.set sigvec,108
|
||||||
|
|
||||||
|
.globl .mon
|
||||||
|
|
||||||
|
.mon:
|
||||||
|
movl (sp)+,r2 # return address in r2
|
||||||
|
movl (sp)+,r0 # monitor call in r0
|
||||||
|
movl ap,r3
|
||||||
|
movl $args,ap
|
||||||
|
cvtlw r0,(ap)+
|
||||||
|
cmpl r0,$61
|
||||||
|
jgtru Lbadmon
|
||||||
|
ashl $2,r0,r0
|
||||||
|
jmp *L0(r0)
|
||||||
|
.data
|
||||||
|
.align 2
|
||||||
|
L0:
|
||||||
|
#ifndef BSD41a
|
||||||
|
.long Lbadmon, Lexit, Lfork, Lread, Lwrite
|
||||||
|
.long Lopen, Lclose, Lwait, Lcreat, Llink
|
||||||
|
.long Lunlink, Lbadmon, Lchdir, Lbadmon, Lbadmon
|
||||||
|
.long Lchmod, Lchown, Lbadmon, Lstat, Llseek
|
||||||
|
.long Lgetpid, Lbadmon, Lbadmon, Lbadmon, Lgetuid
|
||||||
|
.long Lbadmon, Lptrace, Lalarm, Lfstat, Lpause
|
||||||
|
.long Lutime, Lbadmon, Lbadmon, Laccess, Lnice
|
||||||
|
.long Lbadmon, Lsync, Lkill, Lbadmon, Lbadmon
|
||||||
|
.long Lbadmon, Ldup, Lpipe, Lbadmon, Lprofil
|
||||||
|
.long Lbadmon, Lbadmon, Lgetgid, Lsigtrp, Lbadmon
|
||||||
|
.long Lbadmon, Lacct, Lbadmon, Lbadmon, Lioctl
|
||||||
|
.long Lbadmon, Lbadmon, Lbadmon, Lbadmon, Lexece
|
||||||
|
.long Lumask, Lchroot
|
||||||
|
#else
|
||||||
|
.long Lbadmon, Lexit, Lfork, Lread, Lwrite
|
||||||
|
.long Lopen, Lclose, Lwait, Lcreat, Llink
|
||||||
|
.long Lunlink, Lbadmon, Lchdir, Lbadmon, Lmknod
|
||||||
|
.long Lchmod, Lchown, Lbadmon, Lstat, Llseek
|
||||||
|
.long Lgetpid, Lmount, Lumount, Lsetuid, Lgetuid
|
||||||
|
.long Lstime, Lptrace, Lalarm, Lfstat, Lpause
|
||||||
|
.long Lutime, Lbadmon, Lbadmon, Laccess, Lnice
|
||||||
|
.long Lftime, Lsync, Lkill, Lbadmon, Lbadmon
|
||||||
|
.long Lbadmon, Ldup, Lpipe, Ltimes, Lprofil
|
||||||
|
.long Lbadmon, Lsetgid, Lgetgid, Lsigtrp, Lbadmon
|
||||||
|
.long Lbadmon, Lacct, Lbadmon, Llock, Lioctl
|
||||||
|
.long Lbadmon, Lmpxall, Lbadmon, Lbadmon, Lexece
|
||||||
|
.long Lumask, Lchroot
|
||||||
|
#endif
|
||||||
|
.text
|
||||||
|
|
||||||
|
# Each system call first stores its number of arguments, then the
|
||||||
|
# arguments themselves.
|
||||||
|
# The system calls are grouped according to their number of arguments
|
||||||
|
# and their results.
|
||||||
|
# Le*: an errornumber is expected
|
||||||
|
# L*r0*: the value of r0 is expected
|
||||||
|
# L*r1*: the value of r1 is expected
|
||||||
|
# Lnores: no results expected
|
||||||
|
|
||||||
|
# 0 arguments.
|
||||||
|
Lsync:
|
||||||
|
Lpause:
|
||||||
|
Lpause:
|
||||||
|
clrl (ap)+
|
||||||
|
Lnores:
|
||||||
|
jsb syscall
|
||||||
|
movl r3,ap
|
||||||
|
jmp (r2)
|
||||||
|
Lgetpid:
|
||||||
|
clrl (ap)+
|
||||||
|
Lr0:
|
||||||
|
jsb syscall
|
||||||
|
pushl r0
|
||||||
|
jmp (r2)
|
||||||
|
Lgetuid:
|
||||||
|
Lgetgid:
|
||||||
|
clrl (ap)+
|
||||||
|
Lr0r1:
|
||||||
|
jsb syscall
|
||||||
|
pushl r0
|
||||||
|
pushl r1
|
||||||
|
jmp (r2)
|
||||||
|
Lpipe:
|
||||||
|
Lwait:
|
||||||
|
Lfork:
|
||||||
|
clrl (ap)+
|
||||||
|
Ler0r1:
|
||||||
|
jsb syscall
|
||||||
|
pushl r0
|
||||||
|
pushl r1
|
||||||
|
clrl -(sp)
|
||||||
|
jmp (r2)
|
||||||
|
|
||||||
|
# 1 argument.
|
||||||
|
Lexit:
|
||||||
|
Ltimes:
|
||||||
|
cvtbl $1,(ap)+
|
||||||
|
MOVL
|
||||||
|
jbr Lnores
|
||||||
|
Lclose:
|
||||||
|
Lunlink:
|
||||||
|
Lchdir:
|
||||||
|
Lumount:
|
||||||
|
Lsetuid:
|
||||||
|
Lstime:
|
||||||
|
Lnice:
|
||||||
|
Lftime:
|
||||||
|
Lsetgid:
|
||||||
|
Lacct:
|
||||||
|
Llock:
|
||||||
|
Lchroot:
|
||||||
|
cvtbl $1,(ap)+
|
||||||
|
MOVL
|
||||||
|
Le:
|
||||||
|
jsb syscall
|
||||||
|
clrl -(sp)
|
||||||
|
jmp (r2)
|
||||||
|
Lalarm:
|
||||||
|
Lumask:
|
||||||
|
cvtbl $1,(ap)+
|
||||||
|
MOVL
|
||||||
|
jbr Lr0
|
||||||
|
|
||||||
|
# 2 arguments.
|
||||||
|
Llink:
|
||||||
|
Lchmod:
|
||||||
|
Lstat:
|
||||||
|
Lfstat:
|
||||||
|
Lutime:
|
||||||
|
Laccess:
|
||||||
|
Lkill:
|
||||||
|
Lmpxall:
|
||||||
|
cvtbl $2,(ap)+
|
||||||
|
MOVQ
|
||||||
|
jbr Le
|
||||||
|
Ldup:
|
||||||
|
cvtbl $2,(ap)+
|
||||||
|
MOVQ
|
||||||
|
Ler0:
|
||||||
|
jsb syscall
|
||||||
|
pushl r0
|
||||||
|
clrl -(sp)
|
||||||
|
jmp (r2)
|
||||||
|
|
||||||
|
# 3 arguments.
|
||||||
|
Lioctl:
|
||||||
|
Lexece:
|
||||||
|
Lmknod:
|
||||||
|
Lchown:
|
||||||
|
Lmount:
|
||||||
|
cvtbl $3,(ap)+
|
||||||
|
MOVL
|
||||||
|
MOVQ
|
||||||
|
jbr Le
|
||||||
|
Llseek:
|
||||||
|
Lread:
|
||||||
|
Lwrite:
|
||||||
|
cvtbl $3,(ap)+
|
||||||
|
MOVL
|
||||||
|
MOVQ
|
||||||
|
jbr Ler0
|
||||||
|
|
||||||
|
# 4 arguments.
|
||||||
|
Lprofil:
|
||||||
|
cvtbl $4,(ap)+
|
||||||
|
MOVQ
|
||||||
|
MOVQ
|
||||||
|
jbr Lnores
|
||||||
|
Lptrace:
|
||||||
|
cvtbl $4,(ap)+
|
||||||
|
MOVQ
|
||||||
|
MOVQ
|
||||||
|
jbr Ler0
|
||||||
|
|
||||||
|
Lopen:
|
||||||
|
#ifndef BSD41a
|
||||||
|
# The old open(name, mode) system call is simulated by
|
||||||
|
# open(name, mode, 0).
|
||||||
|
cvtbl $3,(ap)+
|
||||||
|
#else
|
||||||
|
cvtbl $2,(ap)+
|
||||||
|
#endif
|
||||||
|
MOVQ
|
||||||
|
#ifndef BSD41a
|
||||||
|
clrl (ap)+
|
||||||
|
#endif
|
||||||
|
jbr Ler0
|
||||||
|
Lcreat:
|
||||||
|
#ifndef BSD41a
|
||||||
|
# The old creat(name, mode) system call is simulated by
|
||||||
|
# open(name, O_WRONLY | O_CREAT | O_TRUNC, mode).
|
||||||
|
cvtbl $5,-2(ap)
|
||||||
|
cvtbl $3,(ap)+
|
||||||
|
#else
|
||||||
|
cvtbl $2,(ap)+
|
||||||
|
#endif
|
||||||
|
MOVL
|
||||||
|
#ifndef BSD41a
|
||||||
|
movl $0x601,(ap)+
|
||||||
|
#endif
|
||||||
|
MOVL
|
||||||
|
jbr Ler0
|
||||||
|
|
||||||
|
syscall:
|
||||||
|
movl $args,ap
|
||||||
|
chmk (ap)+
|
||||||
|
bcc L1
|
||||||
|
cvtwl r0,(sp) # Push the error returned twice,
|
||||||
|
cvtwl r0,-(sp) # overwrite the return address
|
||||||
|
jmp (r2)
|
||||||
|
L1:
|
||||||
|
rsb
|
||||||
|
Lbadmon:
|
||||||
|
pushl $EBADMON
|
||||||
|
jmp .fat
|
||||||
|
Lsigtrp:
|
||||||
|
movl 4(sp),r1 # Sig in r1
|
||||||
|
movl (sp)+,(sp) # Trapno on top of stack
|
||||||
|
cmpl r1,$16
|
||||||
|
bgtru badsig
|
||||||
|
tstl r1
|
||||||
|
beql badsig
|
||||||
|
#ifdef BSD42
|
||||||
|
movl $3,(ap)+ # sigvec(sig, vec, ovec)
|
||||||
|
#else BSD42
|
||||||
|
movl $2,(ap)+ # signal(sig, func)
|
||||||
|
#endif BSD42
|
||||||
|
movl r1,(ap)+
|
||||||
|
movl sigadr0 [r1],r0
|
||||||
|
tstl (sp)
|
||||||
|
blss L2
|
||||||
|
cmpl (sp),$252
|
||||||
|
bgtr badtrp
|
||||||
|
movl r0,(ap)+
|
||||||
|
brb sys
|
||||||
|
L2: cmpl $-3,(sp)
|
||||||
|
bneq L3
|
||||||
|
movl $1,(ap)+ # SIG_IGN
|
||||||
|
brb sys
|
||||||
|
L3: cmpl $-2,(sp)
|
||||||
|
bneq badtrp
|
||||||
|
clrl (ap)+ # SIG_DFL
|
||||||
|
sys:
|
||||||
|
#ifdef BSD42
|
||||||
|
movl -(ap),vec # vec->sv_handler = func
|
||||||
|
movl $vec,(ap)+
|
||||||
|
movl $ovec,(ap)+ # Not used.
|
||||||
|
#endif BSD42
|
||||||
|
pushl sigtrp0 [r1]
|
||||||
|
movl 4(sp),sigtrp0 [r1]
|
||||||
|
movl (sp)+,(sp) # Old trap number on top of stack.
|
||||||
|
movl $args,ap
|
||||||
|
#ifdef BSD42
|
||||||
|
movw $sigvec,(ap)
|
||||||
|
#endif
|
||||||
|
chmk (ap)+
|
||||||
|
bcc L4
|
||||||
|
movl (sp),sigtrp0 [r1] # Error, reset old trap number.
|
||||||
|
pushl r0
|
||||||
|
jmp (r2)
|
||||||
|
L4: clrl -(sp)
|
||||||
|
jmp (r2)
|
||||||
|
badsig:
|
||||||
|
movl $-1,(sp)
|
||||||
|
pushl (sp)
|
||||||
|
jmp (r2)
|
||||||
|
badtrp:
|
||||||
|
movl sigtrp0 [r1],(sp)
|
||||||
|
pushl $-1
|
||||||
|
jmp (r2)
|
||||||
|
|
||||||
|
sigs:
|
||||||
|
.word 0x0000
|
||||||
|
# Routine to catch signals.
|
||||||
|
pushl fp
|
||||||
|
movl 12(fp),fp
|
||||||
|
movl 12(fp),fp # Restore local base, two levels!
|
||||||
|
movl 4(ap),ap
|
||||||
|
pushl sigtrp0 [ap]
|
||||||
|
jsb .trp
|
||||||
|
movl (sp)+,fp
|
||||||
|
ret
|
||||||
|
|
||||||
|
.data
|
||||||
|
#ifdef BSD42
|
||||||
|
vec:
|
||||||
|
.long 0 # sv_handler
|
||||||
|
.long 0 # sv_mask
|
||||||
|
.long 0 # sv_onstack
|
||||||
|
ovec:
|
||||||
|
.long 0 # sv_onstack
|
||||||
|
.long 0 # sv_mask
|
||||||
|
.long 0 # sv_onstack
|
||||||
|
#endif BSD42
|
||||||
|
args:
|
||||||
|
.word 0
|
||||||
|
.long 0
|
||||||
|
.long 0
|
||||||
|
.long 0
|
||||||
|
.long 0
|
||||||
|
.long 0
|
||||||
|
.long 0
|
||||||
|
|
||||||
|
sigadr0:
|
||||||
|
.long 0 #0
|
||||||
|
.long sigs #1
|
||||||
|
.long sigs #2
|
||||||
|
.long sigs #3
|
||||||
|
.long sigs #4
|
||||||
|
.long sigs #5
|
||||||
|
.long sigs #6
|
||||||
|
.long sigs #7
|
||||||
|
.long sigs #8
|
||||||
|
.long sigs #9
|
||||||
|
.long sigs #10
|
||||||
|
.long sigs #11
|
||||||
|
.long sigs #12
|
||||||
|
.long sigs #13
|
||||||
|
.long sigs #14
|
||||||
|
.long sigs #15
|
||||||
|
.long sigs #16
|
||||||
|
|
||||||
|
sigtrp0:
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
||||||
|
.long -2
|
19
mach/vax4/libem/ngf.s
Normal file
19
mach/vax4/libem/ngf.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .ngf
|
||||||
|
|
||||||
|
.ngf:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
mnegf (sp),(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
mnegd (sp),(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
14
mach/vax4/libem/ngi.s
Normal file
14
mach/vax4/libem/ngi.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .ngi
|
||||||
|
|
||||||
|
.ngi:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
mnegl (sp),(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
13
mach/vax4/libem/nop.s
Normal file
13
mach/vax4/libem/nop.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
.globl .nop
|
||||||
|
|
||||||
|
.nop:
|
||||||
|
movl hol0+LINO_AD,r0
|
||||||
|
jsb printd
|
||||||
|
movb $011,r0
|
||||||
|
jsb printc
|
||||||
|
movl sp,r0
|
||||||
|
jsb printd
|
||||||
|
movb $012,r0
|
||||||
|
jmp printc
|
29
mach/vax4/libem/print.s
Normal file
29
mach/vax4/libem/print.s
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# $Header$
|
||||||
|
.globl printd
|
||||||
|
.globl printc
|
||||||
|
|
||||||
|
printd:
|
||||||
|
clrl r1
|
||||||
|
ediv $10,r0,r0,r1
|
||||||
|
beql L1
|
||||||
|
pushl r1
|
||||||
|
jsb printd
|
||||||
|
movl (sp)+,r1
|
||||||
|
L1:
|
||||||
|
addb3 $'0,r1,r0
|
||||||
|
|
||||||
|
printc:
|
||||||
|
movb r0,Lch
|
||||||
|
movl ap,r2
|
||||||
|
movl $L9,ap
|
||||||
|
chmk $4
|
||||||
|
movl r2,ap
|
||||||
|
rsb
|
||||||
|
|
||||||
|
.data
|
||||||
|
L9:
|
||||||
|
.long 3
|
||||||
|
.long 2
|
||||||
|
.long Lch
|
||||||
|
.long 1
|
||||||
|
Lch: .word 0
|
12
mach/vax4/libem/rck.s
Normal file
12
mach/vax4/libem/rck.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .rck
|
||||||
|
|
||||||
|
.rck:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
jmp .rck4
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
17
mach/vax4/libem/rck4.s
Normal file
17
mach/vax4/libem/rck4.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .rck4
|
||||||
|
|
||||||
|
.rck4:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl (sp),(r0) # compare lower bound
|
||||||
|
blss Lerr
|
||||||
|
cmpl (sp),4(r0) # compare upper bound
|
||||||
|
bgtr Lerr
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl r1
|
||||||
|
pushl $ERANGE
|
||||||
|
jmp .trp
|
18
mach/vax4/libem/rmi.s
Normal file
18
mach/vax4/libem/rmi.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .rmi
|
||||||
|
|
||||||
|
.rmi:
|
||||||
|
movl (sp)+,r3
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl (sp)+,r1
|
||||||
|
ashq $-32,r0,r0
|
||||||
|
ediv r2,r0,r1,r0
|
||||||
|
pushl r0
|
||||||
|
jmp (r3)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
14
mach/vax4/libem/rmu.s
Normal file
14
mach/vax4/libem/rmu.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .rmu
|
||||||
|
|
||||||
|
.rmu:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
jsb .rmu4
|
||||||
|
pushl r0
|
||||||
|
rsb
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
18
mach/vax4/libem/rmu4.s
Normal file
18
mach/vax4/libem/rmu4.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .rmu4
|
||||||
|
|
||||||
|
.rmu4:
|
||||||
|
movl (sp)+,r3
|
||||||
|
movl (sp)+,r2
|
||||||
|
blss L1
|
||||||
|
movl (sp)+,r0
|
||||||
|
clrl r1
|
||||||
|
ediv r2,r0,r1,r0
|
||||||
|
jmp (r3)
|
||||||
|
L1:
|
||||||
|
movl (sp)+,r0
|
||||||
|
cmpl r0,r2
|
||||||
|
blssu L2
|
||||||
|
subl2 r2,r0
|
||||||
|
L2:
|
||||||
|
jmp (r3)
|
15
mach/vax4/libem/rol.s
Normal file
15
mach/vax4/libem/rol.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .rol
|
||||||
|
|
||||||
|
.rol:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
movl (sp)+,r0
|
||||||
|
rotl r0,(sp),(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
15
mach/vax4/libem/ror.s
Normal file
15
mach/vax4/libem/ror.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .ror
|
||||||
|
|
||||||
|
.ror:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lerr
|
||||||
|
subl3 (sp)+,$32,r0
|
||||||
|
rotl r0,(sp),(sp)
|
||||||
|
jmp (r1)
|
||||||
|
Lerr:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
26
mach/vax4/libem/sar4.s
Normal file
26
mach/vax4/libem/sar4.s
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .sar4
|
||||||
|
|
||||||
|
.sar4:
|
||||||
|
movl (sp)+,r2
|
||||||
|
movl (sp)+,r0
|
||||||
|
movl 8(r0),r1
|
||||||
|
subl2 (r0),(sp)
|
||||||
|
movl (sp)+,r0
|
||||||
|
mull2 r1,r0
|
||||||
|
addl2 (sp)+,r0
|
||||||
|
cmpl r1,$1
|
||||||
|
bgtr L3
|
||||||
|
cvtlb (sp)+,(r0)
|
||||||
|
jmp (r2)
|
||||||
|
L3:
|
||||||
|
cmpl r1,$2
|
||||||
|
bgtr L2
|
||||||
|
cvtlw (sp)+,(r0)
|
||||||
|
jmp (r2)
|
||||||
|
L2:
|
||||||
|
ashl $-2,r1,r1
|
||||||
|
L1:
|
||||||
|
movl (sp)+,(r0)+
|
||||||
|
sobgtr r1,L1
|
||||||
|
jmp (r2)
|
19
mach/vax4/libem/sbf.s
Normal file
19
mach/vax4/libem/sbf.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .sbf
|
||||||
|
|
||||||
|
.sbf:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
subf2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
cmpl r0,$8
|
||||||
|
bneq L2
|
||||||
|
subd2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L2:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
14
mach/vax4/libem/sbi.s
Normal file
14
mach/vax4/libem/sbi.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .sbi
|
||||||
|
|
||||||
|
.sbi:
|
||||||
|
movl (sp)+,r1
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
subl2 (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
10
mach/vax4/libem/sbs.s
Normal file
10
mach/vax4/libem/sbs.s
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .sbs
|
||||||
|
|
||||||
|
.sbs:
|
||||||
|
movl (sp)+,r1
|
||||||
|
subl2 (sp)+,(sp)
|
||||||
|
movl $4,-(sp)
|
||||||
|
movl r0,-(sp)
|
||||||
|
movl r1,-(sp)
|
||||||
|
jmp .cii
|
24
mach/vax4/libem/set.s
Normal file
24
mach/vax4/libem/set.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .setx
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.setx:
|
||||||
|
movl (sp)+,r3
|
||||||
|
movl (sp)+,r1 # bitnumber in r1
|
||||||
|
subl3 r0,sp,r2
|
||||||
|
L1:
|
||||||
|
clrl -(sp)
|
||||||
|
cmpl sp,r2
|
||||||
|
bgtru L1
|
||||||
|
ashl $3,r0,r2 # number of bits in r2
|
||||||
|
cmpl r1,r2
|
||||||
|
bgequ L2
|
||||||
|
bbcs r1,(sp),L3
|
||||||
|
L3:
|
||||||
|
jmp (r3)
|
||||||
|
L2:
|
||||||
|
pushl $ESET
|
||||||
|
jsb .trp
|
||||||
|
jmp (r3)
|
9
mach/vax4/libem/sig.s
Normal file
9
mach/vax4/libem/sig.s
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .sig
|
||||||
|
|
||||||
|
.sig:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
pushl .trppc
|
||||||
|
movl r0,.trppc
|
||||||
|
jmp (r1)
|
12
mach/vax4/libem/sim.s
Normal file
12
mach/vax4/libem/sim.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .sim
|
||||||
|
|
||||||
|
.sim:
|
||||||
|
movl (sp)+,r0
|
||||||
|
movl (sp)+,.trpim # store ignore mask
|
||||||
|
bbc $5,.trpim,L3 # floating underflow to be ignored?
|
||||||
|
bicpsw $0100
|
||||||
|
jmp (r0)
|
||||||
|
L3:
|
||||||
|
bispsw $0100 # enable underflow trap
|
||||||
|
jmp (r0)
|
16
mach/vax4/libem/sli.s
Normal file
16
mach/vax4/libem/sli.s
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .sli
|
||||||
|
|
||||||
|
.sli:
|
||||||
|
movl (sp)+,r2
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
movl (sp)+,r0
|
||||||
|
movl (sp)+,r1
|
||||||
|
ashl r0,r1,-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
17
mach/vax4/libem/sri.s
Normal file
17
mach/vax4/libem/sri.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .sri
|
||||||
|
|
||||||
|
.sri:
|
||||||
|
movl (sp)+,r2
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq L1
|
||||||
|
movl (sp)+,r0
|
||||||
|
mnegl r0,r0
|
||||||
|
movl (sp)+,r1
|
||||||
|
ashl r0,r1,-(sp)
|
||||||
|
jmp (r2)
|
||||||
|
L1:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
19
mach/vax4/libem/sru.s
Normal file
19
mach/vax4/libem/sru.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .sru
|
||||||
|
|
||||||
|
.sru:
|
||||||
|
movl (sp)+,r3
|
||||||
|
cmpl r0,$4
|
||||||
|
beql .sru4
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
||||||
|
.sru4:
|
||||||
|
movl (sp)+,r2
|
||||||
|
mnegl r2,r2
|
||||||
|
movl (sp)+,r0
|
||||||
|
clrl r1
|
||||||
|
ashq r2,r0,r0
|
||||||
|
movl r0,-(sp)
|
||||||
|
jmp (r3)
|
30
mach/vax4/libem/strhp.s
Normal file
30
mach/vax4/libem/strhp.s
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .strhp
|
||||||
|
|
||||||
|
.strhp:
|
||||||
|
movl (sp)+,r1
|
||||||
|
movl (sp)+,r0
|
||||||
|
pushl r1
|
||||||
|
movl r0,.reghp
|
||||||
|
cmpl r0,.hplim
|
||||||
|
blssu L2
|
||||||
|
addl2 $02000,r0
|
||||||
|
bicl2 $0777,r0
|
||||||
|
movl r0,.hplim
|
||||||
|
movl ap,r1
|
||||||
|
movl $L9,ap
|
||||||
|
chmk (ap)+
|
||||||
|
bcc L1
|
||||||
|
pushl $EHEAP
|
||||||
|
jmp .fat
|
||||||
|
L1:
|
||||||
|
movl r1,ap
|
||||||
|
L2:
|
||||||
|
rsb
|
||||||
|
|
||||||
|
.data
|
||||||
|
L9: .word 17
|
||||||
|
.long 1
|
||||||
|
.hplim: .long _end
|
26
mach/vax4/libem/strlb.s
Normal file
26
mach/vax4/libem/strlb.s
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .strlb
|
||||||
|
# Store the value that is on the stack in fp.
|
||||||
|
# Compute ap.
|
||||||
|
.strlb:
|
||||||
|
movl (sp)+,r3
|
||||||
|
movl (sp)+,fp
|
||||||
|
pushl r3
|
||||||
|
movl $20,ap # Compute argumentbase from local base.
|
||||||
|
# Distance is 5 longwords + the number of
|
||||||
|
# registers saved.
|
||||||
|
movl $1,r3 # Now check register save mask
|
||||||
|
movl $12,r2
|
||||||
|
L1:
|
||||||
|
bitl r3,6(fp)
|
||||||
|
beql L2
|
||||||
|
addl2 $4,ap # Add 1 longword for each register saved
|
||||||
|
L2:
|
||||||
|
ashl $1,r3,r3
|
||||||
|
sobgeq r2,L1
|
||||||
|
|
||||||
|
extzv $14,$2,6(fp),r3 # Now find out about the stack alignment
|
||||||
|
# between fp and ap
|
||||||
|
addl2 r3,ap # add alignment
|
||||||
|
addl2 fp,ap
|
||||||
|
rsb
|
31
mach/vax4/libem/sts.s
Normal file
31
mach/vax4/libem/sts.s
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
|
||||||
|
.globl .sts
|
||||||
|
|
||||||
|
.sts:
|
||||||
|
movl (sp)+,r2
|
||||||
|
cmpl r0,$4
|
||||||
|
beql L1
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
||||||
|
L1:
|
||||||
|
movl (sp)+,r0 # number of bytes in r0
|
||||||
|
movl (sp)+,r1 # address in r1
|
||||||
|
cmpl r0,$1
|
||||||
|
beql L3
|
||||||
|
cmpl r0,$2
|
||||||
|
beql L4
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L2:
|
||||||
|
movl (sp)+,(r1)+
|
||||||
|
sobgtr r0,L2
|
||||||
|
jmp (r2)
|
||||||
|
L3:
|
||||||
|
movl (sp)+,r0
|
||||||
|
movb r0,(r1)
|
||||||
|
jmp (r2)
|
||||||
|
L4:
|
||||||
|
movl (sp)+,r0
|
||||||
|
movw r0,(r1)
|
||||||
|
jmp (r2)
|
26
mach/vax4/libem/trp.s
Normal file
26
mach/vax4/libem/trp.s
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .trp
|
||||||
|
|
||||||
|
.trp:
|
||||||
|
movl r0,-(sp)
|
||||||
|
movl 8(sp),r0
|
||||||
|
movl 4(sp),8(sp)
|
||||||
|
movl (sp)+,(sp)
|
||||||
|
cmpl r0,$16
|
||||||
|
bgequ L1 # a trapnumber >= 16 cannot be ignored
|
||||||
|
bbc r0,.trpim,L1
|
||||||
|
movl (sp)+,r0
|
||||||
|
rsb
|
||||||
|
L1:
|
||||||
|
pushr $017776 # save registers
|
||||||
|
movl r0,-(sp) # trapnumber on stack
|
||||||
|
movl .trppc,r0
|
||||||
|
beql L2 #is there a user defined traphandler?
|
||||||
|
clrl .trppc
|
||||||
|
jsb (r0) #if so, call it
|
||||||
|
tstl (sp)+
|
||||||
|
popr $017776 #restore registers
|
||||||
|
movl (sp)+,r0
|
||||||
|
rsb
|
||||||
|
L2:
|
||||||
|
bpt
|
26
mach/vax4/libem/xar.s
Normal file
26
mach/vax4/libem/xar.s
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# $Header$
|
||||||
|
#include "em_abs.h"
|
||||||
|
.globl .lar
|
||||||
|
|
||||||
|
.lar:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lillins
|
||||||
|
jmp .lar4
|
||||||
|
|
||||||
|
.globl .sar
|
||||||
|
|
||||||
|
.sar:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lillins
|
||||||
|
jmp .sar4
|
||||||
|
|
||||||
|
.globl .aar
|
||||||
|
|
||||||
|
.aar:
|
||||||
|
cmpl r0,$4
|
||||||
|
bneq Lillins
|
||||||
|
jmp .aar4
|
||||||
|
|
||||||
|
Lillins:
|
||||||
|
pushl $EILLINS
|
||||||
|
jmp .fat
|
12
mach/vax4/libem/xor.s
Normal file
12
mach/vax4/libem/xor.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $Header$
|
||||||
|
.globl .xor
|
||||||
|
|
||||||
|
# bytes in r0
|
||||||
|
.xor:
|
||||||
|
movl (sp)+,r2
|
||||||
|
addl3 r0,sp,r1
|
||||||
|
ashl $-2,r0,r0
|
||||||
|
L1:
|
||||||
|
xorl2 (sp)+,(r1)+
|
||||||
|
sobgtr r0,L1
|
||||||
|
jmp (r2)
|
Loading…
Add table
Reference in a new issue