diff --git a/conts/libc/include/sys-userspace/arch-arm/arch/pl011_uart.h b/conts/libc/include/sys-userspace/arch-arm/arch/pl011_uart.h index 85c6037..3315399 100644 --- a/conts/libc/include/sys-userspace/arch-arm/arch/pl011_uart.h +++ b/conts/libc/include/sys-userspace/arch-arm/arch/pl011_uart.h @@ -16,7 +16,6 @@ /* FIXME: Take this value in agreement from kernel, or from kernel only */ #define PL011_USR_BASE 0x500000 -#define PL011_BASE PL011_USR_BASE /* Architecture specific memory access macros */ #define read(val, address) val = *((volatile unsigned int *) address) @@ -48,10 +47,15 @@ #define PL011_BEIRQ (1 << 9) #define PL011_OEIRQ (1 << 10) -/* FIXME: Need to define this somewhere else */ -struct pl011_uart uart; +struct pl011_uart { + unsigned int base; + unsigned int frame_errors; + unsigned int parity_errors; + unsigned int break_errors; + unsigned int overrun_errors; + unsigned int rx_timeout_errors; +}; -int pl011_initialise(struct pl011_uart *uart); int pl011_tx_char(unsigned int base, char c); int pl011_rx_char(unsigned int base, char *c); @@ -90,15 +94,6 @@ static inline void pl011_set_parity_odd(unsigned int base); static inline void pl011_enable_fifos(unsigned int base); static inline void pl011_parity_disable(unsigned int base); -struct pl011_uart { - unsigned int base; - unsigned int frame_errors; - unsigned int parity_errors; - unsigned int break_errors; - unsigned int overrun_errors; - unsigned int rx_timeout_errors; -}; - #define PL011_UARTEN (1 << 0) static inline void pl011_uart_enable(unsigned int base) { diff --git a/conts/libc/src/sys-userspace/arch-arm/platform_init.c b/conts/libc/src/sys-userspace/arch-arm/platform_init.c index b0ad567..c317640 100644 --- a/conts/libc/src/sys-userspace/arch-arm/platform_init.c +++ b/conts/libc/src/sys-userspace/arch-arm/platform_init.c @@ -1,15 +1,9 @@ #include /* TODO: May need to remove this */ -struct pl011_uart uart; - -void platform_init(void); - -void platform_init(void) -{ - uart.base = PL011_USR_BASE; - pl011_initialise(&uart); -} +struct pl011_uart uart = { + .base = PL011_USR_BASE, + }; /* * Initialises the uart class data structures, and the device. @@ -51,3 +45,9 @@ int pl011_initialise(struct pl011_uart * uart) return 0; } +void platform_init(void) +{ + uart.base = PL011_USR_BASE; + pl011_initialise(&uart); +} + diff --git a/conts/posix/test0/include/linker.lds.in b/conts/posix/test0/include/linker.lds.in index e96320c..ff0689c 100644 --- a/conts/posix/test0/include/linker.lds.in +++ b/conts/posix/test0/include/linker.lds.in @@ -7,7 +7,7 @@ virtual_base = %s; physical_base = %s; -__stack = (0x20000000 - 0x1000 - 8); /* First page before the env/args */ +__stack = (virtual_base - 0x1000 - 8); /* First page before the env/args */ offset = virtual_base - physical_base;