summaryrefslogtreecommitdiffstats
path: root/kernel
AgeCommit message (Collapse)AuthorFilesLines
2026-03-27Cmake build generator support: build stageAlexey Gavrilov4-16/+22
Multi-target architecture implementation: each root source code directory presents the one *INTERFACE* target to it's subdirectory subtargets that link only as *STATIC* library. For instance, *arch* directory presents *Architecture* target then *Architecture* target has *CPUID*, *IO*, *PORT* and etc. dependencies Exact order of linking targets is: boot.o CRTIBUNDLE <TARGETS> CRTNBUNDLE. Sequence destruction cause to UB. Please to pay attention to this. TODO - Debug information - Build type - Toolchain file - Image creation - Build by WinGW compiler on Windows platform (optional) Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-20Global variables initialization implementationlinker_scriptAlexey Gavrilov1-5/+10
User implementation of C runtime library objects (`crti.s` and `crtn.s`) for initialization (termination functionality are ignored). Changing files order passed to the linker. Rough order is: boot.s crti.o crtbegin.o other-link-objects.o crtend.o crtn.o Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-20Linker script refactorAlexey Gavrilov1-10/+18
In general this update touching sections for initialization and destruction of global variables. DISCARD sections added (.fini and .comment) and particular sections (.ctors, .dtors, .init, .fini) moved into more common sections (.rodata and .text) accordingly. This decision allows to save a some RAM. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-12-20Linker script reworkAlexey Gavrilov2-57/+60
`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>
2025-12-01Refactoring cpuid model interactionAlexey Gavrilov1-0/+49
Patch for support CPU identification feature. Model smash on two pieces: platform-independent and dependent accordingly. The first obtains architecture details from CPU by special registers or execute instruction and filling proper structure. The second piece needs for more universality to use in independent code. Currently, platform-independent part supports only x86 cpuid(0h,01h) leafs. Signed-off-by: Alexey Gavrilov <alexey.gavrilov@mail.com>
2025-05-10Kheap section + metadataAlexey Gavrilov2-7/+32
2024-05-24Pic + Tuple + refactor PrimaryInitialization classAlexey Gavrilov1-21/+7
2024-04-10MSR + IDT + test ISRsAlexey Gavrilov1-1/+0
2024-03-31IDT + uintptr updateAlexey Gavrilov2-2/+3
2024-03-27Some updates: rename memAddr, define architectureAlexey Gavrilov1-2/+4
2024-03-26Implement MADT tableAlexey Gavrilov1-1/+20
2024-03-06Initialization mechanismAlexey Gavrilov3-35/+7
2024-02-22Implement support of cpuid instruction + include folder + some updatesAlexey Gavrilov2-7/+7
2023-11-04Support for GDT has been written + add makefile debug modeAlexey Gavrilov4-13/+33
2023-08-20Edit README, Makefile, ld confAlexey Gavrilov3-7/+27
2023-08-08First commitAlexey Gavrilov3-0/+60