commit 1f3bd526cba2cd599ef429af7d68928c36799828
parent bb1366b34d9d464835871fcdb8f2f3003f81cb74
Author: Roberto Vargas <roberto.vargas@arm.com>
Date: Tue, 27 Nov 2018 15:25:55 +0000
Merge branch 'master' of ssh://gerrit.oss.arm.com/trusted-firmware/rcode
Change-Id: I6eb94dc0d4baf1e3eaf409dd6f6e449829a5d4a4
Diffstat:
13 files changed, 49 insertions(+), 23 deletions(-)
diff --git a/config/rmode-rcode-armclang.ld b/config/rmode-rcode-armclang.ld
@@ -0,0 +1,16 @@
+SECTIONS
+{
+ .text : {
+ *crt-none.o(.text*)
+ *(.text)
+ }
+ .data : {
+ *(.data)
+ }
+ .bss : {
+ *(.bss)
+ }
+ /DISCARD/ : {
+ *(.ARM.use_no_argv)
+ }
+}
diff --git a/config/rmode-rcode-armclang.mk b/config/rmode-rcode-armclang.mk
@@ -0,0 +1,11 @@
+ARCH = rmode
+SYS = rcode
+MODE = native
+SYSASFLAGS = -fintegrated-as -c -target aarch64-arm-none-eabi
+SYSCFLAGS = -g -static -nostdinc -ffreestanding -std=c99 -mgeneral-regs-only -fno-stack-protector -MD -Wall -target aarch64-arm-none-eabi
+SYSLDFLAGS = -static -z nodefaultlib -T $(CONFDIR)/rmode-rcode-armclang.ld
+COMP = armclang
+ASM = armclang
+LINKER = ld.lld
+OBJCOPY = llvm-objcopy
+OBJDUMP = llvm-objdump
diff --git a/src/libc/arch/mkerrstr b/src/libc/arch/mkerrstr
@@ -18,7 +18,6 @@ END {
print "char *const _sys_errlist[] = {"
for (i in errstr)
printf "\t%-20.20s = \"%s\",\n", "[" i "]", errstr[i]
- printf "\t%-20.20s = \"%s\",\n", "[EUNKNOWN]", "Unknown error"
print "};"
print "const int _sys_nerr =", max";"
diff --git a/src/libk/kerror.c b/src/libk/kerror.c
@@ -8,6 +8,6 @@ void
kerror(const char *s)
{
char *msg = reloc(strerror(errno));
- kprint("errno=%d,%p,%p\n", (void *) strerror(errno), (void *) reloc(strerror(errno)));
+
kprint("%s:%s\n", s, msg);
}
diff --git a/target/hosted/arch.c b/target/hosted/arch.c
@@ -38,7 +38,7 @@ dopanic(void)
{
struct trapframe *fp;
- fp = (getframe) ? (*getframe)() : NULL;
+ fp = (getframe) ? (*getframe)() : NULL;
trap(fp);
abort();
}
diff --git a/target/hosted/hosted.h b/target/hosted/hosted.h
@@ -0,0 +1,3 @@
+extern jmp_buf recover;
+extern int halted;
+extern struct trapframe *(*getframe)(void);
diff --git a/target/native/cache.c b/target/native/cache.c
@@ -23,12 +23,11 @@
static unsigned
log2(unsigned long long v, unsigned width)
{
- unsigned nbits, i;
+ unsigned nbits, i = width;
- for (nbits = 0, i = width - 1; i >= 0; i--) {
+ for (nbits = 0; i-- > 0; nbits++) {
if ((v & (1ull << i)) != 0)
break;
- nbits++;
}
return width - nbits - 1;
}
diff --git a/test/unit/001/.gitignore b/test/unit/001/.gitignore
@@ -1,3 +1,4 @@
hdl_*.c
ramfw
romfw
+rmu
diff --git a/test/unit/001/Makefile b/test/unit/001/Makefile
@@ -84,24 +84,23 @@ RAMOBJS = $(TARGETDIR)/crt/crt.o \
TARGET = romfw ramfw
-all: run
+all: rmu
+ $(MAKE) run
run: $(TARGET)
-romfw: $(ROMOBJS) $(LIBDEP)
+romfw: $(ROMOBJS) $(LIBDEP) libhdl.a
$(LD) -L. $(RCODE_LDFLAGS) $(ROMOBJS) $(RCODE_LDLIBS) -o $@
-ramfw: $(RAMOBJS) $(LIBDEP)
+ramfw: $(RAMOBJS) $(LIBDEP) libhdl.a
$(LD) -L. $(RCODE_LDFLAGS) $(RAMOBJS) $(RCODE_LDLIBS) -o $@
libhdl.a: $(LIBOBJ)
$(AR) $(ARFLAGS) $@ $?
ranlib $@
-$(LIBOBJ): $(LIBOBJ:.o=.c)
-
-$(LIBOBJ:.o=.c): genrmu.sh
- ./genrmu.sh
-
+rmu:
+ ./mkrmu
+ touch $@
clean:
rm -f $(LIBOBJ:.o=.c) *.a
diff --git a/test/unit/001/genrmu.sh b/test/unit/001/mkrmu
diff --git a/test/unit/001/test.c b/test/unit/001/test.c
@@ -6,14 +6,15 @@
#include <libk.h>
#include <rcode.h>
+#include "../../../target/hosted/hosted.h"
+
+struct trapframe frame;
int
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++) {
diff --git a/test/unit/003/test.c b/test/unit/003/test.c
@@ -6,15 +6,13 @@
#include <rcode.h>
#include "../../../src/ec.h"
+#include "../../../target/hosted/hosted.h"
-jmp_buf env;
+struct trapframe frame;
int
main(void)
{
- struct trapframe frame;
- extern jmp_buf recover;
-
frame.esr = RMC << 26; /* class = func = 0 */
if (!setjmp(recover))
trap(&frame);
diff --git a/test/unit/004/test.c b/test/unit/004/test.c
@@ -2,6 +2,8 @@
#include <stdlib.h>
#include <rcode.h>
+#include "../../../target/hosted/hosted.h"
+
void
cleanup(int signum)
{
@@ -42,9 +44,6 @@ mockframe(void)
int
main(void)
{
- extern jmp_buf recover;
- extern struct trapframe *(*getframe)(void);
-
if (setjmp(recover))
return -1;
signal(SIGABRT, cleanup);