diff options
Diffstat (limited to 'src/sys')
-rw-r--r-- | src/sys/core.c | 1 | ||||
-rw-r--r-- | src/sys/core.h | 11 | ||||
-rw-r--r-- | src/sys/kernel.S | 6 | ||||
-rw-r--r-- | src/sys/kernel.h | 8 | ||||
-rw-r--r-- | src/sys/timer.c | 2 |
5 files changed, 24 insertions, 4 deletions
diff --git a/src/sys/core.c b/src/sys/core.c index 37cd6a5..97a77c0 100644 --- a/src/sys/core.c +++ b/src/sys/core.c @@ -13,6 +13,7 @@ #include "../util/status.h" #include "../util/time.h" +#define SYS_CORE_C #ifndef VERSION char* os_info_v = "?"; #else diff --git a/src/sys/core.h b/src/sys/core.h index fa9e1b5..9e25f9d 100644 --- a/src/sys/core.h +++ b/src/sys/core.h @@ -1,6 +1,10 @@ #ifndef SYS_CORE_H #define SYS_CORE_H +#ifndef SYS_CORE_C +extern char* os_info_v; +#endif + extern unsigned long cntfrq; static inline unsigned long load32(unsigned long addr) @@ -41,6 +45,13 @@ static inline void setsp(void* in) asm volatile ("mov sp, %0" :: "r"(in)); } +static inline void* heap_end(void) +{ + unsigned long value; + asm volatile ("ldr %0, =__bss_end": "=r"(value)); + return (void*)value; +} + enum { // The offset for the MMIO area diff --git a/src/sys/kernel.S b/src/sys/kernel.S index a691ebf..e0333ca 100644 --- a/src/sys/kernel.S +++ b/src/sys/kernel.S @@ -2,12 +2,10 @@ .globl kernel_main kernel_main: - push {lr} bl sysinit kernel_main.loop: wfe b kernel_main.loop - pop {lr} .section ".data" .globl cntfrq @@ -19,3 +17,7 @@ cmdidx: .globl cmd cmd: .space 2049 + +.section ".bss.heap" +mheap: + .space 0x100000 diff --git a/src/sys/kernel.h b/src/sys/kernel.h new file mode 100644 index 0000000..e724513 --- /dev/null +++ b/src/sys/kernel.h @@ -0,0 +1,8 @@ +#ifndef SYS_KERNEL_H +#define SYS_KERNEL_H + +extern unsigned long cntfrq; +extern unsigned long cmdidx; +extern char cmd[2048]; + +#endif diff --git a/src/sys/timer.c b/src/sys/timer.c index 9419f80..3753561 100644 --- a/src/sys/timer.c +++ b/src/sys/timer.c @@ -9,8 +9,6 @@ /// Cycles Per Second #define CPS 10 -extern char* os_info_v; - #define SYS_TIMER_C static unsigned long exe_cnt = 0; struct Mutex exe_cnt_m = {.addr = &exe_cnt, .pid = NULL_PID}; |