summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlexey Gavrilov <alexey.gavrilov@mail.com>2025-12-17 14:13:08 +0700
committerAlexey Gavrilov <alexey.gavrilov@mail.com>2025-12-20 14:16:47 +0700
commiteb6a12e18d45879ec383921f0c7378120b71d159 (patch)
tree1d6d6ed08f963c4bb9d48734f86504e6b9ca7139 /arch
parente3e68862bbc731802efc39cbfb1b6df7ab255204 (diff)
Linker script rework
`memory.ld` is a architecture-dependent ld config provides some general symbols which every `memory.ld` config must assign and memory regions associated with each output section. 'linker.ld' config file presents segments configuration. Multiboot section filling move in the 'linker.ld' file. Recommendation for further patches: controlled logic implementation for multiboot version and header/entries in build configuration tool (CMake or make). For instance, multiboot version and video mode selection through variable passing in build system: `cmake ... -DMULTIBOOT_VERSION=2 -DMULTIBOOT_VIDEO_MODE=TEXT_VIDEO_MODE` or 'export MULTIBOOT_VERSION=2; export MULTIBOOT_VIDEO_MODE=TEXT_VIDEO_MODE'. Then build system do proper filling of `.multiboot` section depends on passing variables. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/memory.ld13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/memory.ld b/arch/x86/memory.ld
new file mode 100644
index 0000000..0226aca
--- /dev/null
+++ b/arch/x86/memory.ld
@@ -0,0 +1,13 @@
+MEMORY
+ {
+ RAM : ORIGIN = 0x00100000, LENGTH = 1M
+ }
+
+REGION_ALIAS("REGION_MULTIBOOT", RAM);
+REGION_ALIAS("REGION_TEXT", RAM);
+REGION_ALIAS("REGION_RODATA", RAM);
+REGION_ALIAS("REGION_DATA", RAM);
+REGION_ALIAS("REGION_BSS", RAM);
+REGION_ALIAS("REGION_COMMON", RAM);
+
+PROVIDE(START_ADDR = ORIGIN(RAM));