diff --git a/platforms/qemu_integratorcp/Makefile b/platforms/qemu_integratorcp/Makefile index 551529f..5ac20af 100644 --- a/platforms/qemu_integratorcp/Makefile +++ b/platforms/qemu_integratorcp/Makefile @@ -16,7 +16,7 @@ AS = arm-none-eabi-gcc CFLAGS := $(CFLAGS) -Wall -g -c -mcpu=arm926ej-s -ffreestanding AFLAGS := $(CFLAGS) -Wall -g -c -mcpu=arm926ej-s -ffreestanding -LFLAGS := $(LFLAGS) -Wall -mcpu=arm926ej-s -Wl,-Map=system.map,--verbose -Tsystem.ld +LFLAGS := $(LFLAGS) -Wall -mcpu=arm926ej-s -Wl,-Map=system.map -Tsystem.ld CDEFS := $(CDEFS) -DATOMTHREADS_TEST='"$(TEST_NAME)"' ADEFS := $(ADEFS) @@ -26,6 +26,7 @@ LLIBS := $(LLIBS) SRCS := $(SRCS) \ modules.c \ + syscalls.c \ main.c \ $(ATOMTHREADS)/tests/$(TEST_NAME).c @@ -64,6 +65,7 @@ all_tests: make run_test "TEST_NAME=timer1" make run_test "TEST_NAME=timer2" make run_test "TEST_NAME=timer3" + make run_test "TEST_NAME=timer4" make run_test "TEST_NAME=timer5" make run_test "TEST_NAME=timer6" make run_test "TEST_NAME=timer7" @@ -76,6 +78,7 @@ all_tests: make run_test "TEST_NAME=queue7" make run_test "TEST_NAME=queue8" make run_test "TEST_NAME=queue9" + make run_test "TEST_NAME=queue10" make run_test "TEST_NAME=sem1" make run_test "TEST_NAME=sem2" make run_test "TEST_NAME=sem3" diff --git a/platforms/qemu_integratorcp/modules.c b/platforms/qemu_integratorcp/modules.c index 55e1115..7f9b0e2 100644 --- a/platforms/qemu_integratorcp/modules.c +++ b/platforms/qemu_integratorcp/modules.c @@ -76,6 +76,7 @@ dbg_format_msg (char *format, ...) * May be provided by the compiler toolchain in some cases. * */ +extern void _mainCRTStartup (void) __attribute__((weak)); void _mainCRTStartup(void) { unsigned long *src; diff --git a/platforms/qemu_integratorcp/syscalls.c b/platforms/qemu_integratorcp/syscalls.c index 56d8b9e..97295a7 100644 --- a/platforms/qemu_integratorcp/syscalls.c +++ b/platforms/qemu_integratorcp/syscalls.c @@ -11,6 +11,19 @@ enum { #define UART_DR(baseaddr) (*(unsigned int *)(baseaddr)) #define UART_FR(baseaddr) (*(((unsigned int *)(baseaddr))+6)) +/** + * Define all functions as weak in case the compiler toolchain provides them + */ +extern int _close(int file) __attribute__((weak)); +extern int _fstat(int file, struct stat *st) __attribute__((weak)); +extern int _isatty(int file) __attribute__((weak)); +extern int _lseek(int file, int ptr, int dir) __attribute__((weak)); +extern int _open(const char *name, int flags, int mode) __attribute__((weak)); +extern int _read(int file, char *ptr, int len) __attribute__((weak)); +extern caddr_t _sbrk(int incr) __attribute__((weak)); +extern int _write(int file, char *ptr, int len) __attribute__((weak)); + + int _close(int file) { return -1; } int _fstat(int file, struct stat *st) {