parent
0c6c5eebf4
commit
1398204eb0
|
@ -36,6 +36,7 @@ target_cpu = @target_cpu@
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
SUBDIRS = @subdirs@
|
SUBDIRS = @subdirs@
|
||||||
RPATH_ENVVAR = @RPATH_ENVVAR@
|
RPATH_ENVVAR = @RPATH_ENVVAR@
|
||||||
|
INTFLAGS_FOR_TARGET=--watch-cycles-nmi=+100
|
||||||
|
|
||||||
EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \
|
EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \
|
||||||
echo $${rootme}/../../expect/expect ; \
|
echo $${rootme}/../../expect/expect ; \
|
||||||
|
@ -82,6 +83,7 @@ RUN_FOR_TARGET = `\
|
||||||
TESTS= \
|
TESTS= \
|
||||||
hello.hi \
|
hello.hi \
|
||||||
exit47.ko \
|
exit47.ko \
|
||||||
|
tick.ti \
|
||||||
\
|
\
|
||||||
t-bsh.ok \
|
t-bsh.ok \
|
||||||
t-bsw.ok \
|
t-bsw.ok \
|
||||||
|
@ -93,6 +95,8 @@ TESTS= \
|
||||||
t-jmp.ok \
|
t-jmp.ok \
|
||||||
t-jr.ok \
|
t-jr.ok \
|
||||||
t-ldsr.ok \
|
t-ldsr.ok \
|
||||||
|
t-popml.ok \
|
||||||
|
t-popmh.ok \
|
||||||
t-sld.ok \
|
t-sld.ok \
|
||||||
t-sxb.ok \
|
t-sxb.ok \
|
||||||
t-sxh.ok \
|
t-sxh.ok \
|
||||||
|
@ -105,9 +109,14 @@ sanity:
|
||||||
@eval echo LD_FOR_TARGET=$(LD_FOR_TARGET)
|
@eval echo LD_FOR_TARGET=$(LD_FOR_TARGET)
|
||||||
@eval echo RUN_FOR_TARGET=$(RUN_FOR_TARGET)
|
@eval echo RUN_FOR_TARGET=$(RUN_FOR_TARGET)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(TESTS)
|
||||||
|
rm -f *.run *.o
|
||||||
|
rm -f core *.core
|
||||||
|
|
||||||
# Rules for running the tests
|
# Rules for running the tests
|
||||||
|
|
||||||
.SUFFIXES: .ok .run .hi .ko
|
.SUFFIXES: .ok .run .hi .ko .ti
|
||||||
.run.ok:
|
.run.ok:
|
||||||
rm -f tmp-$* $*.hi
|
rm -f tmp-$* $*.hi
|
||||||
ulimit -t 5 ; \
|
ulimit -t 5 ; \
|
||||||
|
@ -130,7 +139,14 @@ sanity:
|
||||||
exit 1 ; \
|
exit 1 ; \
|
||||||
fi
|
fi
|
||||||
mv tmp-$* $*.ko
|
mv tmp-$* $*.ko
|
||||||
|
.run.ti:
|
||||||
|
rm -f tmp-$* $*.ti
|
||||||
|
set +e ; \
|
||||||
|
ulimit -t 5 ; \
|
||||||
|
$(RUN_FOR_TARGET) $(RUNFLAGS_FOR_TARGET) $(INTFLAGS_FOR_TARGET) $*.run > tmp-$*
|
||||||
|
test `cat tmp-$* | wc -l` -eq 10 < /dev/null
|
||||||
|
test `grep Tick tmp-$* | wc -l` -eq 10 < /dev/null
|
||||||
|
mv tmp-$* $*.ti
|
||||||
|
|
||||||
# Rules for building the test
|
# Rules for building the test
|
||||||
# Preference is for obtaining the executable (.run) from a prebuilt image
|
# Preference is for obtaining the executable (.run) from a prebuilt image
|
||||||
|
@ -148,3 +164,10 @@ sanity:
|
||||||
.S.o:
|
.S.o:
|
||||||
$(AS_FOR_TARGET) $(ASFLAGS_FOR_TARGET) -I$(srcdir) $(srcdir)/$*.S -o $*.o
|
$(AS_FOR_TARGET) $(ASFLAGS_FOR_TARGET) -I$(srcdir) $(srcdir)/$*.S -o $*.o
|
||||||
# NNN
|
# NNN
|
||||||
|
|
||||||
|
Makefile: Makefile.in config.status
|
||||||
|
$(SHELL) ./config.status
|
||||||
|
|
||||||
|
config.status: configure
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
|
|
|
@ -62,3 +62,7 @@ _start:
|
||||||
PSW_S = 0x2
|
PSW_S = 0x2
|
||||||
PSW_Z = 0x1
|
PSW_Z = 0x1
|
||||||
|
|
||||||
|
|
||||||
|
# definitions of various interrupt addresses
|
||||||
|
INT_RESET = 0x0
|
||||||
|
INT_NMI = 0x10
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
.include "t-macros.i"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
load sp stackEI
|
||||||
|
ldsr r0, psw # ENSURE NP=EP=0
|
||||||
|
test_popmh_EI:
|
||||||
|
popmh {eipc, eipsw}
|
||||||
|
# check EIPSW
|
||||||
|
stsr eipsw, r3
|
||||||
|
check1 r3 0xe0
|
||||||
|
ldsr r0, eipsw
|
||||||
|
# check EIPC
|
||||||
|
stsr eipc, r3
|
||||||
|
check1 r3 0xec
|
||||||
|
ldsr r0, eipc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mov PSW_NP, r1
|
||||||
|
ldsr r1, psw # ENSURE NP=1, EP=0
|
||||||
|
load sp stackFE
|
||||||
|
test_popmh_FE:
|
||||||
|
popmh {fepc, fepsw}
|
||||||
|
# check FEPSW
|
||||||
|
stsr fepsw, r3
|
||||||
|
check1 r3 0xf0
|
||||||
|
ldsr r0, fepsw
|
||||||
|
# check FEPC
|
||||||
|
stsr fepc, r3
|
||||||
|
check1 r3 0xfc
|
||||||
|
ldsr r0, fepc
|
||||||
|
|
||||||
|
|
||||||
|
load sp stackR
|
||||||
|
test_popmh_R:
|
||||||
|
popmh {r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31}
|
||||||
|
check1 r16 16
|
||||||
|
mov 0, r16
|
||||||
|
check1 r17 17
|
||||||
|
mov 0, r17
|
||||||
|
check1 r18 18
|
||||||
|
mov 0, r18
|
||||||
|
check1 r19 19
|
||||||
|
mov 0, r19
|
||||||
|
check1 r20 20
|
||||||
|
mov 0, r20
|
||||||
|
check1 r21 21
|
||||||
|
mov 0, r21
|
||||||
|
check1 r22 22
|
||||||
|
mov 0, r22
|
||||||
|
check1 r23 23
|
||||||
|
mov 0, r23
|
||||||
|
check1 r24 24
|
||||||
|
mov 0, r24
|
||||||
|
check1 r25 25
|
||||||
|
mov 0, r25
|
||||||
|
check1 r26 26
|
||||||
|
mov 0, r26
|
||||||
|
check1 r27 27
|
||||||
|
mov 0, r27
|
||||||
|
check1 r28 28
|
||||||
|
mov 0, r28
|
||||||
|
check1 r29 29
|
||||||
|
mov 0, r29
|
||||||
|
check1 r30 30
|
||||||
|
mov 0, r30
|
||||||
|
check1 r31 31
|
||||||
|
mov 0, r31
|
||||||
|
|
||||||
|
exit0
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
stackEI:
|
||||||
|
.long 0xe0 #EIPSW
|
||||||
|
.long 0xec #EIPC
|
||||||
|
|
||||||
|
|
||||||
|
stackFE:
|
||||||
|
.long 0xf0 #FEPSW
|
||||||
|
.long 0xfc #FEPC
|
||||||
|
|
||||||
|
|
||||||
|
stackR:
|
||||||
|
.long 31
|
||||||
|
.long 30
|
||||||
|
.long 29
|
||||||
|
.long 28
|
||||||
|
.long 27
|
||||||
|
.long 26
|
||||||
|
.long 25
|
||||||
|
.long 24
|
||||||
|
.long 23
|
||||||
|
.long 22
|
||||||
|
.long 21
|
||||||
|
.long 20
|
||||||
|
.long 19
|
||||||
|
.long 18
|
||||||
|
.long 17
|
||||||
|
.long 16
|
||||||
|
|
||||||
|
|
||||||
|
stackPSW:
|
||||||
|
.long 0xee
|
|
@ -0,0 +1,109 @@
|
||||||
|
.include "t-macros.i"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
load sp stackEI
|
||||||
|
ldsr r0, psw # ENSURE NP=EP=0
|
||||||
|
test_popml_EI:
|
||||||
|
popml {eipc, eipsw}
|
||||||
|
# check EIPSW
|
||||||
|
stsr eipsw, r3
|
||||||
|
check1 r3 0xe0
|
||||||
|
ldsr r0, eipsw
|
||||||
|
# check EIPC
|
||||||
|
stsr eipc, r3
|
||||||
|
check1 r3 0xec
|
||||||
|
ldsr r0, eipc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mov PSW_NP, r1
|
||||||
|
ldsr r1, psw # ENSURE NP=1, EP=0
|
||||||
|
load sp stackFE
|
||||||
|
test_popml_FE:
|
||||||
|
popml {fepc, fepsw}
|
||||||
|
# check FEPSW
|
||||||
|
stsr fepsw, r3
|
||||||
|
check1 r3 0xf0
|
||||||
|
ldsr r0, fepsw
|
||||||
|
# check FEPC
|
||||||
|
stsr fepc, r3
|
||||||
|
check1 r3 0xfc
|
||||||
|
ldsr r0, fepc
|
||||||
|
|
||||||
|
|
||||||
|
load sp stackR
|
||||||
|
test_popml_R:
|
||||||
|
popml {r1,r2,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15}
|
||||||
|
mov r1, r3
|
||||||
|
check1 r3 1
|
||||||
|
mov 0, r3
|
||||||
|
check1 r2 2
|
||||||
|
mov 0, r2
|
||||||
|
#check1 r3 3
|
||||||
|
check1 r4 4
|
||||||
|
mov 0, r4
|
||||||
|
check1 r5 5
|
||||||
|
mov 0, r5
|
||||||
|
check1 r6 6
|
||||||
|
mov 0, r6
|
||||||
|
check1 r7 7
|
||||||
|
mov 0, r7
|
||||||
|
check1 r8 8
|
||||||
|
mov 0, r8
|
||||||
|
check1 r9 9
|
||||||
|
mov 0, r9
|
||||||
|
check1 r10 10
|
||||||
|
mov 0, r10
|
||||||
|
check1 r11 11
|
||||||
|
mov 0, r11
|
||||||
|
check1 r12 12
|
||||||
|
mov 0, r12
|
||||||
|
check1 r13 13
|
||||||
|
mov 0, r13
|
||||||
|
check1 r14 14
|
||||||
|
mov 0, r14
|
||||||
|
check1 r15 15
|
||||||
|
mov 0, r15
|
||||||
|
|
||||||
|
|
||||||
|
load sp, stackPSW
|
||||||
|
test_popml_PSW:
|
||||||
|
popml {psw}
|
||||||
|
stsr psw, r2
|
||||||
|
check1 r2, 0xee
|
||||||
|
|
||||||
|
|
||||||
|
exit0
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
stackEI:
|
||||||
|
.long 0xe0 #EIPSW
|
||||||
|
.long 0xec #EIPC
|
||||||
|
|
||||||
|
|
||||||
|
stackFE:
|
||||||
|
.long 0xf0 #FEPSW
|
||||||
|
.long 0xfc #FEPC
|
||||||
|
|
||||||
|
|
||||||
|
stackR:
|
||||||
|
.long 15
|
||||||
|
.long 14
|
||||||
|
.long 13
|
||||||
|
.long 12
|
||||||
|
.long 11
|
||||||
|
.long 10
|
||||||
|
.long 9
|
||||||
|
.long 8
|
||||||
|
.long 7
|
||||||
|
.long 6
|
||||||
|
.long 5
|
||||||
|
.long 4
|
||||||
|
#.long 3 - sp
|
||||||
|
.long 2
|
||||||
|
.long 1
|
||||||
|
|
||||||
|
|
||||||
|
stackPSW:
|
||||||
|
.long 0xee
|
|
@ -0,0 +1,42 @@
|
||||||
|
.include "t-macros.i"
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
# Establish `interrupt..einterrupt' at the NMI interrupt address
|
||||||
|
load r1 interrupt
|
||||||
|
load r2 einterrupt
|
||||||
|
load r3 INT_NMI
|
||||||
|
copy: ld.b 0[r1], r4
|
||||||
|
st.b r4, 0[r3]
|
||||||
|
add 1, r1
|
||||||
|
add 1, r3
|
||||||
|
cmp r1, r2
|
||||||
|
bge copy
|
||||||
|
|
||||||
|
# Keep looping until r1 becomes non zero - a tick
|
||||||
|
mov 0, r1
|
||||||
|
mov 0, r2
|
||||||
|
loop: cmp 0, r1
|
||||||
|
be loop
|
||||||
|
|
||||||
|
# Print the message indicating that a tick was encountered
|
||||||
|
mov 4, r6
|
||||||
|
mov 1, r7 # FID
|
||||||
|
load r8 tick # string
|
||||||
|
load r9 etick-tick # size
|
||||||
|
trap 31
|
||||||
|
mov 0, r1
|
||||||
|
add 1, r2
|
||||||
|
cmp 10, r2
|
||||||
|
blt loop
|
||||||
|
|
||||||
|
exit0
|
||||||
|
|
||||||
|
interrupt:
|
||||||
|
mov 1, r1
|
||||||
|
reti
|
||||||
|
einterrupt:
|
||||||
|
|
||||||
|
.data
|
||||||
|
tick: .ascii "Tick\n"
|
||||||
|
etick:
|
Loading…
Reference in New Issue