diff --git a/configs/kernel-debug.yaml b/configs/kernel-debug.yaml index f769a48..b8579a3 100644 --- a/configs/kernel-debug.yaml +++ b/configs/kernel-debug.yaml @@ -23,7 +23,8 @@ variables: "-ggdb", "-D__ELF__", - "-D__JSIX__", + "-D__jsix__", + "-D__j6kernel", "-U__linux", "-U__linux__", "-DPRINTF_ALIAS_STANDARD_FUNCTION_NAMES=1", diff --git a/configs/rules.ninja b/configs/rules.ninja index e35a813..53f774c 100644 --- a/configs/rules.ninja +++ b/configs/rules.ninja @@ -37,7 +37,7 @@ rule compile_asm deps = gcc rule parse_cog - command = $cog -o $out -d $cogflags $in + command = $cog -o $out -d -D target=$target $cogflags $in description = Parsing $name rule exe diff --git a/configs/user-debug.yaml b/configs/user-debug.yaml index ae2d9ab..1f7203a 100644 --- a/configs/user-debug.yaml +++ b/configs/user-debug.yaml @@ -11,7 +11,7 @@ variables: "-g", "-D__ELF__", - "-D__JSIX__", + "-D__jsix__", "-U__linux", "-U__linux__", diff --git a/src/kernel/kernel.module b/src/kernel/kernel.module index b3b3538..8f4f626 100644 --- a/src/kernel/kernel.module +++ b/src/kernel/kernel.module @@ -6,7 +6,7 @@ kernel = module("kernel", output = "jsix.elf", targets = [ "kernel" ], description = "jsix kernel", - deps = [ "util", "cpu", "bootproto" ], + deps = [ "util", "cpu", "bootproto", "j6" ], includes = [ "." ], sources = [ "apic.cpp", diff --git a/src/kernel/memory_bootstrap.cpp b/src/kernel/memory_bootstrap.cpp index 3dd7248..1e43d4d 100644 --- a/src/kernel/memory_bootstrap.cpp +++ b/src/kernel/memory_bootstrap.cpp @@ -2,7 +2,6 @@ #include #include -#include #include #include "assert.h" diff --git a/src/kernel/scheduler.cpp b/src/kernel/scheduler.cpp index ec3638b..023e338 100644 --- a/src/kernel/scheduler.cpp +++ b/src/kernel/scheduler.cpp @@ -1,6 +1,5 @@ #include -#include #include #include "apic.h" diff --git a/src/include/j6/errors.h b/src/libraries/j6/include/j6/errors.h similarity index 100% rename from src/include/j6/errors.h rename to src/libraries/j6/include/j6/errors.h diff --git a/src/include/j6/flags.h b/src/libraries/j6/include/j6/flags.h similarity index 100% rename from src/include/j6/flags.h rename to src/libraries/j6/include/j6/flags.h diff --git a/src/include/j6/init.h b/src/libraries/j6/include/j6/init.h similarity index 100% rename from src/include/j6/init.h rename to src/libraries/j6/include/j6/init.h diff --git a/src/include/j6/signals.h b/src/libraries/j6/include/j6/signals.h similarity index 100% rename from src/include/j6/signals.h rename to src/libraries/j6/include/j6/signals.h diff --git a/src/libraries/j6/include/j6/syscalls.h.cog b/src/libraries/j6/include/j6/syscalls.h.cog index 88c68dc..c8ade0b 100644 --- a/src/libraries/j6/include/j6/syscalls.h.cog +++ b/src/libraries/j6/include/j6/syscalls.h.cog @@ -1,6 +1,10 @@ #pragma once // vim: ft=cpp +// The kernel depends on libj6 for some shared code, +// but should not include the user-specific code. +#ifndef __j6kernel + #include #ifdef __cplusplus @@ -42,3 +46,5 @@ for id, scope, method in syscalls.methods: #ifdef __cplusplus } #endif + +#endif // __j6kernel diff --git a/src/include/j6/tables/log_areas.inc b/src/libraries/j6/include/j6/tables/log_areas.inc similarity index 100% rename from src/include/j6/tables/log_areas.inc rename to src/libraries/j6/include/j6/tables/log_areas.inc diff --git a/src/include/j6/tables/object_types.inc b/src/libraries/j6/include/j6/tables/object_types.inc similarity index 100% rename from src/include/j6/tables/object_types.inc rename to src/libraries/j6/include/j6/tables/object_types.inc diff --git a/src/include/j6/tables/syscalls.inc b/src/libraries/j6/include/j6/tables/syscalls.inc similarity index 100% rename from src/include/j6/tables/syscalls.inc rename to src/libraries/j6/include/j6/tables/syscalls.inc diff --git a/src/include/j6/tables/vm_flags.inc b/src/libraries/j6/include/j6/tables/vm_flags.inc similarity index 100% rename from src/include/j6/tables/vm_flags.inc rename to src/libraries/j6/include/j6/tables/vm_flags.inc diff --git a/src/include/j6/types.h b/src/libraries/j6/include/j6/types.h similarity index 100% rename from src/include/j6/types.h rename to src/libraries/j6/include/j6/types.h diff --git a/src/libraries/j6/init.cpp b/src/libraries/j6/init.cpp index d73ae2a..85604ba 100644 --- a/src/libraries/j6/init.cpp +++ b/src/libraries/j6/init.cpp @@ -1,3 +1,7 @@ +// The kernel depends on libj6 for some shared code, +// but should not include the user-specific code. +#ifndef __j6kernel + #include #include #include @@ -39,3 +43,5 @@ _init_libj6(uint64_t *rsp) } } } + +#endif // __j6kernel diff --git a/src/libraries/j6/j6.module b/src/libraries/j6/j6.module index e4cc7a5..ea564e8 100644 --- a/src/libraries/j6/j6.module +++ b/src/libraries/j6/j6.module @@ -5,10 +5,15 @@ j6 = module("j6", includes = [ "include" ], sources = [ "init.cpp", + "include/j6/syscalls.h.cog", + "syscalls.s.cog", ]) from glob import glob definitions = glob('definitions/**/*.def', recursive=True) -j6.add_input("include/j6/syscalls.h.cog", deps=definitions) -j6.add_input("syscalls.s.cog", deps=definitions) + +j6.add_depends([ + "include/j6/syscalls.h.cog", + "syscalls.s.cog", + ], definitions) diff --git a/src/libraries/j6/syscalls.s.cog b/src/libraries/j6/syscalls.s.cog index f1caf3f..b1b9250 100644 --- a/src/libraries/j6/syscalls.s.cog +++ b/src/libraries/j6/syscalls.s.cog @@ -27,11 +27,12 @@ ; ctx.parse("syscalls.def") ; syscalls = ctx.interfaces['syscalls'] ; -; for id, scope, method in syscalls.methods: -; if scope: -; name = f"{scope.name}_{method.name}" -; else: -; name = method.name -; cog.outl(f"define_syscall {name:20}, {id}") +; if target != "kernel": +; for id, scope, method in syscalls.methods: +; if scope: +; name = f"{scope.name}_{method.name}" +; else: +; name = method.name +; cog.outl(f"define_syscall {name:20}, {id}") ; ]]] ; [[[end]]]