From 6002ec7d841d91d85cc55733c539594c97fc2e30 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Sun, 20 Feb 2022 23:50:43 +0000 Subject: moving files around --- kc/api/core/memory.h | 15 +++++++++++ kc/api/kc.h | 11 ++++++++ kc/api/lib.h | 10 +++++++ kc/boot/Makefile | 2 +- kc/component.ld | 75 ---------------------------------------------------- kc/core/Makefile | 2 +- kc/core/kcc_memory.c | 2 +- kc/core/kprint.c | 2 +- kc/core/memory.c | 2 +- kc/core/memory.h | 2 +- kc/defaults.mk | 3 ++- kc/kc.ld | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ kc/reloc_x86_64.c | 2 +- 13 files changed, 120 insertions(+), 83 deletions(-) create mode 100644 kc/api/core/memory.h create mode 100644 kc/api/kc.h create mode 100644 kc/api/lib.h delete mode 100644 kc/component.ld create mode 100644 kc/kc.ld (limited to 'kc') diff --git a/kc/api/core/memory.h b/kc/api/core/memory.h new file mode 100644 index 0000000..b428b15 --- /dev/null +++ b/kc/api/core/memory.h @@ -0,0 +1,15 @@ +/* + * kernel component core - memory management interface + */ +#pragma once + +#include + +#include + +typedef uint64_t kc_phys_addr; +typedef void * kc_virt_addr; + +kc_phys_addr kcc_page_alloc(void); +void kcc_page_free(kc_phys_addr page); + diff --git a/kc/api/kc.h b/kc/api/kc.h new file mode 100644 index 0000000..c3390b2 --- /dev/null +++ b/kc/api/kc.h @@ -0,0 +1,11 @@ +#pragma once + +extern char kc_image_base; +extern char kc_text_begin; +extern char kc_text_end; +extern char kc_rodata_begin; +extern char kc_data_begin; +extern char kc_data_end; + +#define KC_EXPORT __attribute__((visibility("default"))) + diff --git a/kc/api/lib.h b/kc/api/lib.h new file mode 100644 index 0000000..3bf0eca --- /dev/null +++ b/kc/api/lib.h @@ -0,0 +1,10 @@ +#pragma once + +#include + +void *memcpy(void *dest, const void *src, size_t size); +void *memmove(void *dest, const void *src, size_t size); +void *memset(void *dest, int val, size_t size); +int memcmp(const void *str1, const void *str2, size_t count); +size_t strlen(const char *s); + diff --git a/kc/boot/Makefile b/kc/boot/Makefile index 506c12b..36d069e 100644 --- a/kc/boot/Makefile +++ b/kc/boot/Makefile @@ -7,7 +7,7 @@ VPATH := ../../lib ../ TARGET := efi.os .DEFAULT: $(TARGET) -CPPFLAGS += -I../../api +CPPFLAGS += -I../../api -I ../api OBJS := entry_x86_64.o reloc_x86_64.o kc_main.o elf64.o memcmp.o memcpy.o \ memmove.o memset.o diff --git a/kc/component.ld b/kc/component.ld deleted file mode 100644 index dc158f3..0000000 --- a/kc/component.ld +++ /dev/null @@ -1,75 +0,0 @@ -ENTRY(kc_entry) - -SECTIONS -{ - PROVIDE_HIDDEN(kc_image_base = .); - - . = sizeof_headers; - - .rel : - { - *(.rel) - *(.rel.*) - } - - .rela : - { - *(.rel) - *(.rela.*) - } - - .hash : - { - *(.hash) - } - - .dynsym : - { - *(.dynsym) - } - - .dynstr : - { - *(.dynstr) - } - - .text : ALIGN(4K) - { - PROVIDE(kc_text_begin = .); - *(.text.start) - *(.text) - . = ALIGN(4K); - PROVIDE(kc_text_end = .); - } =0xcc - - .dynamic : ALIGN(4K) - { - *(.dynamic) - } - - .data : - { - PROVIDE(kc_data_begin = .); - *(.rodata) - *(.data) - } - - .data.rel : - { - *(.data.rel) - *(.data.rel.*) - } - - .bss : - { - *(.bss) - PROVIDE(kc_data_end = .); - } - - /DISCARD/ : - { - *(.eh_frame) - *(.comment) - } -} - diff --git a/kc/core/Makefile b/kc/core/Makefile index 589616f..6651ca6 100644 --- a/kc/core/Makefile +++ b/kc/core/Makefile @@ -6,7 +6,7 @@ VPATH := ../../lib ../ cpu/ TARGET := kernel.os .DEFAULT: $(TARGET) -CPPFLAGS += -I../../api -I. +CPPFLAGS += -I../../api -I../api -I. CFLAGS += -Wno-unused-const-variable -Wno-unused-function -fvisibility=hidden -g SOBJS := diff --git a/kc/core/kcc_memory.c b/kc/core/kcc_memory.c index 68aa1d4..1f3a813 100644 --- a/kc/core/kcc_memory.c +++ b/kc/core/kcc_memory.c @@ -1,6 +1,6 @@ #include "memory.h" -#include +#include KC_EXPORT kc_phys_addr kcc_page_alloc(void) diff --git a/kc/core/kprint.c b/kc/core/kprint.c index 5d2fbdc..762f99f 100644 --- a/kc/core/kprint.c +++ b/kc/core/kprint.c @@ -1,7 +1,7 @@ #include "kprint.h" #include "serial.h" -#include +#include #include #include diff --git a/kc/core/memory.c b/kc/core/memory.c index 2dac707..bef6cd2 100644 --- a/kc/core/memory.c +++ b/kc/core/memory.c @@ -7,7 +7,7 @@ #include -#include +#include /* kernel virtual space guarantees * diff --git a/kc/core/memory.h b/kc/core/memory.h index 5deda81..526d8ca 100644 --- a/kc/core/memory.h +++ b/kc/core/memory.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include diff --git a/kc/defaults.mk b/kc/defaults.mk index 4464801..588b9b0 100644 --- a/kc/defaults.mk +++ b/kc/defaults.mk @@ -1,5 +1,6 @@ + LIBDIRS += -L$(dir $(shell $(CC) -print-libgcc-file-name)) -LDSCRIPT := ../component.ld +LDSCRIPT := ../kc.ld LDFLAGS += -z max-page-size=4096 --export-dynamic -pic --no-dynamic-linker \ -z separate-code LOADLIBES := -lgcc diff --git a/kc/kc.ld b/kc/kc.ld new file mode 100644 index 0000000..dc158f3 --- /dev/null +++ b/kc/kc.ld @@ -0,0 +1,75 @@ +ENTRY(kc_entry) + +SECTIONS +{ + PROVIDE_HIDDEN(kc_image_base = .); + + . = sizeof_headers; + + .rel : + { + *(.rel) + *(.rel.*) + } + + .rela : + { + *(.rel) + *(.rela.*) + } + + .hash : + { + *(.hash) + } + + .dynsym : + { + *(.dynsym) + } + + .dynstr : + { + *(.dynstr) + } + + .text : ALIGN(4K) + { + PROVIDE(kc_text_begin = .); + *(.text.start) + *(.text) + . = ALIGN(4K); + PROVIDE(kc_text_end = .); + } =0xcc + + .dynamic : ALIGN(4K) + { + *(.dynamic) + } + + .data : + { + PROVIDE(kc_data_begin = .); + *(.rodata) + *(.data) + } + + .data.rel : + { + *(.data.rel) + *(.data.rel.*) + } + + .bss : + { + *(.bss) + PROVIDE(kc_data_end = .); + } + + /DISCARD/ : + { + *(.eh_frame) + *(.comment) + } +} + diff --git a/kc/reloc_x86_64.c b/kc/reloc_x86_64.c index dfc6df6..c70027f 100644 --- a/kc/reloc_x86_64.c +++ b/kc/reloc_x86_64.c @@ -1,4 +1,4 @@ -#include +#include #include -- cgit v1.3.1-1-g115d