9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 95cab64cb457eb2a2affac999a0ca2bff17f563f
parent ce70866f608b4d6f7479773bf7bc9deb7ea31864
Author: Roberto Vargas <roberto.vargas@arm.com>
Date:   Fri, 23 Nov 2018 08:46:34 +0000

[test] Fix tests after the last tree reorganization

Change-Id: I8640f580bdd032dd9667dd8f9458e7fbebc0363f

Diffstat:
Mscripts/rules.mk | 2+-
Mtarget/hosted/arch.c | 7++++++-
Mtarget/hosted/rom.c | 6++++++
Mtest/unit/001/Makefile | 15++++++---------
Mtest/unit/001/test.c | 22++--------------------
Mtest/unit/002/Makefile | 4++--
Mtest/unit/003/Makefile | 13+++----------
Mtest/unit/003/test.c | 21++-------------------
Mtest/unit/004/Makefile | 13+++----------
Mtest/unit/004/test.c | 37++++++++++++++++++++-----------------
Mtest/unit/004/test.sh | 2++
11 files changed, 53 insertions(+), 89 deletions(-)

diff --git a/scripts/rules.mk b/scripts/rules.mk @@ -4,7 +4,7 @@ include $(PROJECTDIR)/config/$(CONF).mk INCDIR = $(PROJECTDIR)/include LIBDIR = $(PROJECTDIR)/lib BINDIR = $(PROJECTDIR)/bin -ARCHDIR = $(PROJECTDIR)/arch/$(ARCH) +TARGETDIR = $(PROJECTDIR)/target/$(MODE) DRVDIR = $(PROJECTDIR)/drivers SRCDIR = $(PROJECTDIR)/src SCRIPTDIR= $(PROJECTDIR)/scripts diff --git a/target/hosted/arch.c b/target/hosted/arch.c @@ -9,6 +9,7 @@ jmp_buf recover; noreturn void abort(void); noreturn void longjmp(jmp_buf env, int val); +struct trapframe *(*getframe)(void); struct bssmap * bss(void) @@ -33,5 +34,9 @@ doswtch(struct trapframe *fp) void dopanic(void) { - trap(NULL); + struct trapframe *fp; + + fp = (getframe) ? (*getframe)() : NULL; + trap(fp); + abort(); } diff --git a/target/hosted/rom.c b/target/hosted/rom.c @@ -1,3 +1,4 @@ +#include <setjmp.h> #include <string.h> #include <rcode.h> @@ -12,6 +13,11 @@ struct tree tree[] = { int main(int argc, char *argv[]) { + extern jmp_buf recover; + + if (setjmp(recover)) + return 1; + memset(bss, 0, sizeof(struct bssmap)); bss->fp = &(struct trapframe) {0}; diff --git a/test/unit/001/Makefile b/test/unit/001/Makefile @@ -72,19 +72,16 @@ LIBOBJ = hdl_RMU_System_InterfaceVersion.o \ hdl_RMU_Granule_ImportInit.o \ hdl_RMU_Granule_Import.o \ -ROMOBJS = $(ARCHDIR)/sys/$(SYS)/crt.o \ - $(ARCHDIR)/bss.o \ +ROMOBJS = $(TARGETDIR)/crt/crt.o \ + $(TARGETDIR)/arch.o \ $(SRCDIR)/romfw/builtin.o \ test.o \ -RAMOBJS = $(ARCHDIR)/sys/$(SYS)/crt.o \ - $(ARCHDIR)/bss.o \ +RAMOBJS = $(TARGETDIR)/crt/crt.o \ + $(TARGETDIR)/arch.o \ $(SRCDIR)/ramfw/builtin.o \ test.o \ -LIBS = -lhdl -lk -lc -LIBDEP = libhdl.a $(LIBDIR)/libk.a $(LIBDIR)/libc.a - TARGET = romfw ramfw all: run @@ -92,10 +89,10 @@ all: run run: $(TARGET) romfw: $(ROMOBJS) $(LIBDEP) - $(LD) -L. $(RCODE_LDFLAGS) $(ROMOBJS) $(LIBS) -o $@ + $(LD) -L. $(RCODE_LDFLAGS) $(ROMOBJS) $(RCODE_LDLIBS) -o $@ ramfw: $(RAMOBJS) $(LIBDEP) - $(LD) -L. $(RCODE_LDFLAGS) $(RAMOBJS) $(LIBS) -o $@ + $(LD) -L. $(RCODE_LDFLAGS) $(RAMOBJS) $(RCODE_LDLIBS) -o $@ libhdl.a: $(LIBOBJ) $(AR) $(ARFLAGS) $@ $? diff --git a/test/unit/001/test.c b/test/unit/001/test.c @@ -6,7 +6,6 @@ #include <libk.h> #include <rcode.h> -jmp_buf env; int main(int argc, char *argv[]) @@ -14,6 +13,7 @@ main(int argc, char *argv[]) unsigned i, j; Rmucmd cmd; struct trapframe frame; + extern jmp_buf recover; bss->fp = &frame; for (i = 0; i < 256; i++) { @@ -22,27 +22,9 @@ main(int argc, char *argv[]) cmd.func = j; bss->cmd = &cmd; dbg("%u\t%u\t", i, j); - if (!setjmp(env)) + if (!setjmp(recover)) rmc(&cmd); } } return 0; } - -void -dohalt(void) -{ - abort(); -} - -void -dopanic(void) -{ - trap(NULL); -} - -void -doswtch(struct trapframe *fp) -{ - longjmp(env, 1); -} diff --git a/test/unit/002/Makefile b/test/unit/002/Makefile @@ -3,7 +3,7 @@ PROJECTDIR = ../../.. include $(PROJECTDIR)/scripts/rules.mk include ../rules.mk -OBJS = $(ARCHDIR)/sys/$(SYS)/crt.o test.o +OBJS = $(TARGETDIR)/crt/crt.o test.o LIBS = -ltypes -lc LIBDEP = $(LIBDIR)/libtypes.a $(LIBDIR)/libc.a @@ -12,4 +12,4 @@ TARGET = run all: $(TARGET) $(TARGET): $(OBJS) $(LIBDEP) - $(LD) $(RCODE_LDFLAGS) $(OBJS) $(LIBS) -o $@ + $(LD) $(RCODE_LDFLAGS) $(OBJS) $(RCODE_LDLIBS) -o $@ diff --git a/test/unit/003/Makefile b/test/unit/003/Makefile @@ -3,21 +3,14 @@ PROJECTDIR = ../../.. include $(PROJECTDIR)/scripts/rules.mk include ../rules.mk -OBJS = $(ARCHDIR)/sys/$(SYS)/crt.o \ - $(ARCHDIR)/bss.o \ +OBJS = $(TARGETDIR)/crt/crt.o \ + $(TARGETDIR)/arch.o \ $(SRCDIR)/romfw/builtin.o \ test.o \ -LIBS = -lhdl -lrmu -lk -lc - -LIBDEP = $(LIBDIR)/libhdl.a \ - $(LIBDIR)/librmu.a \ - $(LIBDIR)/libk.a \ - $(LIBDIR)/libc.a \ - TARGET = run all: $(TARGET) $(TARGET): $(OBJS) $(LIBDEP) - $(LD) $(RCODE_LDFLAGS) $(OBJS) $(LIBS) -o $@ + $(LD) $(RCODE_LDFLAGS) $(OBJS) $(RCODE_LDLIBS) -o $@ diff --git a/test/unit/003/test.c b/test/unit/003/test.c @@ -13,30 +13,13 @@ int main(void) { struct trapframe frame; + extern jmp_buf recover; frame.esr = RMC << 26; /* class = func = 0 */ - if (!setjmp(env)) + if (!setjmp(recover)) trap(&frame); assert(frame.x0 == 0); assert(frame.x1 == 0); assert(frame.x2 == 1); return 0; } - -void -dohalt(void) -{ - abort(); -} - -void -dopanic(void) -{ - trap(NULL); -} - -void -doswtch(struct trapframe *fp) -{ - longjmp(env, 1); -} diff --git a/test/unit/004/Makefile b/test/unit/004/Makefile @@ -3,21 +3,14 @@ PROJECTDIR = ../../.. include $(PROJECTDIR)/scripts/rules.mk include ../rules.mk -OBJS = $(ARCHDIR)/sys/$(SYS)/crt.o \ - $(ARCHDIR)/bss.o \ +OBJS = $(TARGETDIR)/crt/crt.o \ + $(TARGETDIR)/arch.o \ $(SRCDIR)/romfw/builtin.o \ test.o \ -LIBS = -lhdl -lrmu -lk -lc - -LIBDEP = $(LIBDIR)/libhdl.a \ - $(LIBDIR)/librmu.a \ - $(LIBDIR)/libk.a \ - $(LIBDIR)/libc.a \ - TARGET = run all: $(TARGET) $(TARGET): $(OBJS) $(LIBDEP) - $(LD) $(RCODE_LDFLAGS) $(OBJS) $(LIBS) -o $@ + $(LD) $(RCODE_LDFLAGS) $(OBJS) $(RCODE_LDLIBS) -o $@ diff --git a/test/unit/004/test.c b/test/unit/004/test.c @@ -1,23 +1,17 @@ +#include <signal.h> #include <stdlib.h> #include <rcode.h> -int -main(void) -{ - panic("oops"); - return 0; -} - void -dohalt(void) +cleanup(int signum) { - exit(0); + _Exit(0); } -void -dopanic(void) +static struct trapframe * +mockframe(void) { - struct trapframe frame; + static struct trapframe frame; frame.x0 = 0, frame.x1 = 1; frame.x2 = 2, frame.x3 = 3; @@ -38,12 +32,21 @@ dopanic(void) frame.elr = (void *)0xdeadbeef, frame.spsr = 32; frame.esr = 33, frame.far = 34; frame.sp = (void *)0xdeadbabe; - trap(&frame); - abort(); + + return &frame; } -void -doswtch(struct trapframe *fp) +int +main(void) { - panic("swtch() not implemented"); + extern jmp_buf recover; + extern struct trapframe *(*getframe)(void); + + if (setjmp(recover)) + return -1; + signal(SIGABRT, cleanup); + getframe = mockframe; + + panic("oops"); + return 0; } diff --git a/test/unit/004/test.sh b/test/unit/004/test.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -e + tmp1=tmp.$$ trap 'r=$?;rm -f $tmp1;exit $r' EXIT HUP INT QUIT TERM