9os

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

commit f5398ca09c6f2e047535f27cda2a6bdff3c3c509
parent 05b2cd263e2fa1e71a530f2d50fcf34d17c70601
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Sun, 18 Oct 2020 09:41:46 +0200

os9/arm64: Add isys()

This function is intended for the generic system initialization
such that the code can be shared between all the ports.

Change-Id: I0b4ae0881f56cc40ff104357f67a904b369fafc8

Diffstat:
Minclude/os9/os9.h | 5++++-
Msrc/os9/Makefile | 1+
Msrc/os9/arch/arm64/arch.h | 6+++---
Msrc/os9/arch/arm64/cache.c | 2+-
Msrc/os9/arch/arm64/fpu.c | 2+-
Msrc/os9/arch/arm64/gic.c | 2+-
Msrc/os9/arch/arm64/main.c | 46++++++++++++++--------------------------------
Msrc/os9/arch/arm64/panic.c | 2+-
Msrc/os9/dev/dev.c | 2+-
Msrc/os9/dev/devuart.c | 2+-
10 files changed, 28 insertions(+), 42 deletions(-)

diff --git a/include/os9/os9.h b/include/os9/os9.h @@ -199,6 +199,9 @@ struct win { extern void *alloc(size_t size); extern void *allocb(int); +/* init.c */ +extern void isys(void); + /* dlang.c */ extern int debug(void); @@ -222,7 +225,7 @@ extern noreturn void swtch(Context *ctx); extern noreturn void trap(Context *ctx); /* dev functions */ -extern void idev(Mach *); +extern void idev(void); extern Chan *devopen(char *name, int mode); extern int devwrite(Chan *c, void *buf, int n); extern int devread(Chan *c, void *buf, int n); diff --git a/src/os9/Makefile b/src/os9/Makefile @@ -6,6 +6,7 @@ OBJS =\ dlang.o\ sched.o\ alloc.o\ + init.o\ dev/builtin.o\ DIRS =\ diff --git a/src/os9/arch/arm64/arch.h b/src/os9/arch/arm64/arch.h @@ -30,7 +30,7 @@ extern void invalltlb(void); extern void invtlb(uintptr_t); extern void invdcachesetway(void *); -extern void icache(Mach *); +extern void icache(void); extern void immu(void); -extern void ifpu(Mach *); -extern void igic(Mach *); +extern void ifpu(void); +extern void igic(void); diff --git a/src/os9/arch/arm64/cache.c b/src/os9/arch/arm64/cache.c @@ -89,7 +89,7 @@ invdcache(void) } void -icache(Mach *m) +icache(void) { uint64_t sctlr; diff --git a/src/os9/arch/arm64/fpu.c b/src/os9/arch/arm64/fpu.c @@ -16,7 +16,7 @@ fpoff(void) } void -ifpu(Mach *m) +ifpu(void) { fpon(); syswr(FPCR, 0); diff --git a/src/os9/arch/arm64/gic.c b/src/os9/arch/arm64/gic.c @@ -4,7 +4,7 @@ #include "arch.h" void -igic(Mach *m) +igic(void) { interrupt(ENABLE); barrier(CODE); diff --git a/src/os9/arch/arm64/main.c b/src/os9/arch/arm64/main.c @@ -6,49 +6,31 @@ #include "sysreg.h" #include "arch.h" -Chan *console; - static void -info(Mach *m) +info(void) { + kprint("Booting os9\n"); kprint("os9: version %s\n", OS9VERSION); } -static void -icons(Mach *m) +char * +getconf(char *name) { - static char setin[] = "addin #t0/raw\n"; - static char setout[] = "addout #t0/raw\n"; - static char echo[] = "echo on\n"; - static char cooked[] = "cooked on\n"; - Chan *c; - - if ((c = devopen("#c/ctl", O_WRITE)) == NULL) - panic("namec:/dev/cons/ctl write"); - if (devwrite(c, setin, sizeof(setin)) < 0) - panic("devwrite:setin"); - if (devwrite(c, setout, sizeof(setout)) < 0) - panic("devwrite:setout"); - if (devwrite(c, echo, sizeof(echo)) < 0) - panic("devwrite:echo"); - if (devwrite(c, cooked, sizeof(cooked)) < 0) - panic("devwrite:cooked"); - if (devclose(c) < 0) - panic("devclose"); + static char constxt[] = + "addin #t0/raw\n" + "addout #t0/raw\n" + "echo on\n" + "cooked on\n"; - if ((console = devopen("#c/raw", O_RDWR)) == NULL) - panic("namec:#c/raw read"); + return constxt; } void main(Mach *m) { - kprint("Booting os9\n"); - - ifpu(m); - igic(m); - info(m); - - panic("out of sync"); + info(); + ifpu(); + igic(); + isys(); } diff --git a/src/os9/arch/arm64/panic.c b/src/os9/arch/arm64/panic.c @@ -79,7 +79,7 @@ dumpstack(Context *ctx) kprint("%0llx%c", *sp++, (i % 4 == 0) ? '\n' : ' '); } -noreturn void +void fault(const char *msg, Context *ctx) { static int first = 1; diff --git a/src/os9/dev/dev.c b/src/os9/dev/dev.c @@ -724,7 +724,7 @@ err0: } void -idev(Mach *m) +idev(void) { Chan *c; diff --git a/src/os9/dev/devuart.c b/src/os9/dev/devuart.c @@ -223,7 +223,7 @@ uartlink(Uartphy *phy, Attr *attr) panic("uartlink1"); siz = sizeof(Uart); - up = memset(alloc(siz), 0, siz); + up = alloc(siz); up->phy = phy; uarts[nuarts++] = up;