summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/boot.s15
-rw-r--r--kernel/linker.ld24
2 files changed, 32 insertions, 7 deletions
diff --git a/kernel/boot.s b/kernel/boot.s
index 798e7e3..534beb6 100644
--- a/kernel/boot.s
+++ b/kernel/boot.s
@@ -2,17 +2,19 @@ MBFLAGS equ 0
MAGIC equ 0x1BADB002
CHECKSUM equ -(MAGIC + MBFLAGS)
-section .multiboot
+ section .multiboot
align 4
dd MAGIC
dd MBFLAGS
dd CHECKSUM
section .bss
+resb 512
align 16
-resb 160
+; align 16 bytes according to the System V ABI standard
+; Stack space
stack_bottom:
-resb 16384
+resb 16384 ; 16KiB
stack_top:
section .text
@@ -25,3 +27,10 @@ _start:
.hang: hlt
jmp .hang
.end:
+
+section .kheap
+kheap_top:
+; Kernel heap space
+; Change this value together Kheap::size varibale (mem/Kheap.h file)
+resb 4096
+kheap_bottom:
diff --git a/kernel/linker.ld b/kernel/linker.ld
index ae4d98d..abee596 100644
--- a/kernel/linker.ld
+++ b/kernel/linker.ld
@@ -6,28 +6,44 @@ SECTIONS
.multiboot :
{
+ _startMultiboot = .;
*(.multiboot)
+ _endMultiboot = .;
}
+
.text BLOCK(4K) : ALIGN(4K)
{
+ _startText = .;
*(.text)
- *(.eh_frame)
- *(.ctors)
+ _endText = .;
}
.rodata BLOCK(4K) : ALIGN(4k)
{
+ _startRodata = .;
*(.rodata)
+ _endRodata = .;
}
.data BLOCK(4K) : ALIGN(4K)
{
+ _startData = .;
*(.data)
+ _endData = .;
}
- .bss BLOCK(4K) : ALIGN(4K)
+ .bss BLOCK(16K) : ALIGN(16K)
{
- *(COMMON)
+ _startBss = .;
*(.bss)
+ _endBss = .;
}
+
+ .kheap BLOCK(4k) : ALIGN(4k)
+ {
+ _startKheap = .;
+ *(.kheap)
+ _endKheap = .;
+ }
+
}