chore: display kernel version

This commit is contained in:
d0p1 🏳️‍⚧️ 2024-07-14 11:22:43 +02:00
parent bd7468e69c
commit cfeeea957c
12 changed files with 299 additions and 241 deletions

1
.gitignore vendored
View file

@ -35,3 +35,4 @@ bochsrc.bxrc
*.mod *.mod
webring.json webring.json
webring.txt webring.txt
kernel/const.inc

View file

@ -17,6 +17,10 @@ SRCS = kernel.asm \
.PHONY: all .PHONY: all
all: $(KERNEL) all: $(KERNEL)
PHONY: const.inc
const.inc: const.inc.in
sh $(TOOLSDIR)/version.sh $< $@
$(KERNEL): $(SRCS) $(KERNEL): $(SRCS)
$(AS) kernel.asm $@ $(AS) kernel.asm $@

View file

@ -7,9 +7,11 @@ PSIZE = 0x1000
STPDBOOT_MAGIC = 0x53545044 STPDBOOT_MAGIC = 0x53545044
; --------- VERSION ------------- ; --------- VERSION -------------
VERSION_MAJOR = 1 VERSION_MAJOR = @MAJOR@
VERSION_MINOR = 0 VERSION_MINOR = @MINOR@
VERSION_COMMIT = "@COMMIT@" VERSION_COMMIT equ "@COMMIT@"
VERSION_FULL equ "@FULLVERSION@"
BUILD_DATE equ "@DATE@"
; ------------- OTHER ----------- ; ------------- OTHER -----------
CR = 0x0D CR = 0x0D

View file

@ -16,7 +16,10 @@ vga_console_clear:
rep stosb rep stosb
ret ret
;; Function: vga_console_putc
;;
;; In:
;; AL - charactere to print
vga_console_putc: vga_console_putc:
ret ret

View file

@ -1,3 +0,0 @@
irq_timer:
iret

View file

@ -1,9 +1,15 @@
;; File: isr.inc
macro ISR [name,error] { macro ISR [name,error] {
forward forward
dd isr_#name dd isr_#name
forward
local szIntName
szIntName db `name#, 0
forward forward
isr_#name#: isr_#name#:
cli cli
mov esi, szIntName
call klog
if error eq 0 if error eq 0
push 0 push 0
end if end if
@ -25,6 +31,17 @@ idt_setup:
inc ecx inc ecx
cmp ecx, 32 cmp ecx, 32
jb @b jb @b
@@:
mov eax, irq_dummy
mov [aInterruptGate + (ecx * 8)], ax
mov [aInterruptGate + (ecx * 8) + 2], word 0x08
mov [aInterruptGate + (ecx * 8) + 5], word 0x8E
shr eax, 16
mov [aInterruptGate + (ecx * 8) + 6], ax
inc ecx
cmp ecx, 0x30
jb @b
mov ecx, 0x42 mov ecx, 0x42
mov eax, isr_syscall mov eax, isr_syscall
@ -49,6 +66,9 @@ aInterruptGate:
.end: .end:
irq_dummy:
iret
isr_common: isr_common:
pusha pusha
@ -61,6 +81,9 @@ isr_common:
mov fs, ax mov fs, ax
mov gs, ax mov gs, ax
mov eax, [esp+IntFrame.intno]
push eax
mov esi, szMsgInterrupt mov esi, szMsgInterrupt
call klog call klog
@ -110,4 +133,4 @@ ISR \
security_exception, 0, \ security_exception, 0, \
reserved31, 0 reserved31, 0
szMsgInterrupt db "Interrupt", 0 szMsgInterrupt db "Interrupt (int: %x)", 0

View file

@ -63,7 +63,7 @@ kmain:
call idt_setup call idt_setup
int 0x42 ;int 0x42
.halt: .halt:
hlt hlt
@ -84,7 +84,7 @@ kmain:
include 'pic.inc' include 'pic.inc'
szMsgKernelAlive db "Kernel is alive", 0 szMsgKernelAlive db "Kernel (", VERSION_FULL , ") is alive", 0
szErrorBootProtocol db "Error: wrong magic number", 0 szErrorBootProtocol db "Error: wrong magic number", 0
boot_structure BootInfo boot_structure BootInfo

View file

@ -50,6 +50,20 @@ pic_init:
ret ret
;; Function: pic_eoi
;;
;; In:
;; EAX - irq
pic_eoi:
cmp eax, 8
jb @f
mov al, PIC_EOI
out PIC2_COMMAND, al
@@:
mov al, PIC_EOI
out PIC1_COMMAND, al
ret
pic_disable: pic_disable:
mov al, 0xFF mov al, 0xFF
out PIC1_DATA, al out PIC1_DATA, al

View file

@ -133,7 +133,7 @@ struc IDTGate {
;; > +--------------- |----------------+-----------------|-----------------+ ;; > +--------------- |----------------+-----------------|-----------------+
struc intframe { struc IntFrame {
;; registers ;; registers
.edi dd ? .edi dd ?
.esi dd ? .esi dd ?
@ -161,3 +161,7 @@ struc intframe {
.useresp dd ? .useresp dd ?
.ss dd ? .ss dd ?
} }
virtual at 0
IntFrame IntFrame
sizeof.IntFrame:
end virtual

View file

@ -1,5 +1,7 @@
SYSCALL_EXIT = 0x01 SYSCALL_EXIT = 0x01
SYSCALL_FORK = 0x02 SYSCALL_FORK = 0x02
SYSCALL_READ = 0x03
SYSCALL_WRITE = 0x04
isr_syscall: isr_syscall:
push eax push eax

10
tools/git-version → tools/version.sh Executable file → Normal file
View file

@ -6,6 +6,9 @@ if [ ! -n "$vers" ]; then
vers="0.0" vers="0.0"
fi fi
major="$(echo -n "${vers}" | cut -d. -f1)"
minor="$(echo -n "${vers}" | cut -d. -f1)"
commit="$(git rev-parse --short HEAD)" commit="$(git rev-parse --short HEAD)"
full_vers="${vers}-${commit}" full_vers="${vers}-${commit}"
@ -13,4 +16,9 @@ if [ -n "$(git status)" ]; then
full_vers="${full_vers}-dirty" full_vers="${full_vers}-dirty"
fi fi
echo -n "${full_vers}" sed -e "s/@MAJOR@/${major}/g" \
-e "s/@MINOR@/${minor}/g" \
-e "s/@COMMIT@/${commit}/g"\
-e "s/@FULLVERSION@/${full_vers}/g" \
-e "s/@DATE@/$(date)/g" \
"$1" > "$2"