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:
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