mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-28 06:20:30 +00:00
sim: msp430: start a test framework
The current sim lacks any sort of tests. Start a basic framework and add a simple one to test the add insn.
This commit is contained in:
parent
7b0278dcad
commit
f32d1b7f58
@ -1,3 +1,8 @@
|
||||
2014-03-10 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* configure.tgt (msp430*-*-*): Set sim_testsuite to yes.
|
||||
* configure: Regenerate.
|
||||
|
||||
2014-01-06 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* common/cgen-trace.c: Don't use old VA_* macros.
|
||||
|
1
sim/configure
vendored
1
sim/configure
vendored
@ -3775,6 +3775,7 @@ subdirs="$subdirs arm"
|
||||
subdirs="$subdirs msp430"
|
||||
|
||||
|
||||
sim_testsuite=yes
|
||||
;;
|
||||
rl78-*-*)
|
||||
|
||||
|
@ -88,6 +88,7 @@ case "${target}" in
|
||||
;;
|
||||
msp430*-*-*)
|
||||
SIM_ARCH(msp430)
|
||||
sim_testsuite=yes
|
||||
;;
|
||||
rl78-*-*)
|
||||
SIM_ARCH(rl78)
|
||||
|
@ -1,3 +1,7 @@
|
||||
2014-03-10 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
2014-03-04 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* common/bits-gen.c (main): Change to new style prototype.
|
||||
|
1
sim/testsuite/configure
vendored
1
sim/testsuite/configure
vendored
@ -1895,6 +1895,7 @@ case "${target}" in
|
||||
;;
|
||||
msp430*-*-*)
|
||||
sim_arch=msp430
|
||||
sim_testsuite=yes
|
||||
;;
|
||||
rl78-*-*)
|
||||
sim_arch=rl78
|
||||
|
3
sim/testsuite/sim/msp430/ChangeLog
Normal file
3
sim/testsuite/sim/msp430/ChangeLog
Normal file
@ -0,0 +1,3 @@
|
||||
2014-03-10 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* add.s, allinsn.exp, testutils.inc: New files.
|
20
sim/testsuite/sim/msp430/add.s
Normal file
20
sim/testsuite/sim/msp430/add.s
Normal file
@ -0,0 +1,20 @@
|
||||
# check that basic add insn works.
|
||||
# mach: msp430
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
|
||||
mov #10, r4
|
||||
add #23, r4
|
||||
cmp #33, r4
|
||||
jne 1f
|
||||
|
||||
cmp #32, r4
|
||||
jlo 1f
|
||||
|
||||
cmp #34, r4
|
||||
jhs 1f
|
||||
|
||||
pass
|
||||
1: fail
|
15
sim/testsuite/sim/msp430/allinsn.exp
Normal file
15
sim/testsuite/sim/msp430/allinsn.exp
Normal file
@ -0,0 +1,15 @@
|
||||
# msp430 simulator testsuite
|
||||
|
||||
if [istarget msp430-*] {
|
||||
# all machines
|
||||
set all_machs "msp430"
|
||||
|
||||
foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.s]] {
|
||||
# If we're only testing specific files and this isn't one of them,
|
||||
# skip it.
|
||||
if ![runtest_file_p $runtests $src] {
|
||||
continue
|
||||
}
|
||||
run_sim_test $src $all_machs
|
||||
}
|
||||
}
|
70
sim/testsuite/sim/msp430/testutils.inc
Normal file
70
sim/testsuite/sim/msp430/testutils.inc
Normal file
@ -0,0 +1,70 @@
|
||||
# MACRO: start
|
||||
# All assembler tests should start with a call to "start"
|
||||
.macro start
|
||||
.text
|
||||
|
||||
# Skip over these inlined funcs.
|
||||
jmp __start;
|
||||
|
||||
.global __pass
|
||||
.type __pass, function
|
||||
__pass:
|
||||
write 1, _passmsg, 5
|
||||
exit 0
|
||||
|
||||
.global __fail
|
||||
.type __fail, function
|
||||
__fail:
|
||||
write 1, _failmsg, 5
|
||||
exit 1
|
||||
|
||||
.data
|
||||
_passmsg:
|
||||
.ascii "pass\n"
|
||||
.align 4
|
||||
|
||||
_failmsg:
|
||||
.ascii "fail\n"
|
||||
.align 4
|
||||
|
||||
.text
|
||||
.global __start
|
||||
.type __start, function
|
||||
__start:
|
||||
.endm
|
||||
|
||||
# MACRO: system_call
|
||||
# Make a libgloss/Linux system call
|
||||
.macro system_call nr:req
|
||||
call #(0x180|\nr);
|
||||
.endm
|
||||
|
||||
# MACRO: exit
|
||||
# Quit the current test
|
||||
.macro exit rc:req
|
||||
mov #\rc, r12
|
||||
system_call 1
|
||||
.endm
|
||||
|
||||
# MACRO: pass
|
||||
# Write 'pass' to stdout via syscalls and quit;
|
||||
# meant for non-OS operating environments
|
||||
.macro pass
|
||||
jmp __pass;
|
||||
.endm
|
||||
|
||||
# MACRO: fail
|
||||
# Write 'fail' to stdout via syscalls and quit;
|
||||
# meant for non-OS operating environments
|
||||
.macro fail
|
||||
jmp __fail;
|
||||
.endm
|
||||
|
||||
# MACRO: write
|
||||
# Just like the write() C function; uses system calls
|
||||
.macro write fd:req, buf:req, count:req
|
||||
mov #\fd, r12;
|
||||
mov #\buf, r13;
|
||||
mov #\count, r14;
|
||||
system_call 5
|
||||
.endm
|
Loading…
Reference in New Issue
Block a user