9os

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

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:
Aconfig/rmode-rcode-armclang.ld | 16++++++++++++++++
Aconfig/rmode-rcode-armclang.mk | 11+++++++++++
Msrc/libc/arch/mkerrstr | 1-
Msrc/libk/kerror.c | 2+-
Mtarget/hosted/arch.c | 2+-
Atarget/hosted/hosted.h | 3+++
Mtarget/native/cache.c | 5++---
Mtest/unit/001/.gitignore | 1+
Mtest/unit/001/Makefile | 15+++++++--------
Rtest/unit/001/genrmu.sh -> test/unit/001/mkrmu | 0
Mtest/unit/001/test.c | 5+++--
Mtest/unit/003/test.c | 6++----
Mtest/unit/004/test.c | 5++---
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);