chore: display kernel version
This commit is contained in:
		
							parent
							
								
									bd7468e69c
								
							
						
					
					
						commit
						cfeeea957c
					
				
					 12 changed files with 299 additions and 241 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -35,3 +35,4 @@ bochsrc.bxrc | |||
| *.mod | ||||
| webring.json | ||||
| webring.txt | ||||
| kernel/const.inc | ||||
|  |  | |||
|  | @ -17,6 +17,10 @@ SRCS	= kernel.asm \ | |||
| .PHONY: all | ||||
| all: $(KERNEL) | ||||
| 
 | ||||
| PHONY: const.inc | ||||
| const.inc: const.inc.in | ||||
| 	sh $(TOOLSDIR)/version.sh $< $@ | ||||
| 
 | ||||
| $(KERNEL): $(SRCS) | ||||
| 	$(AS) kernel.asm $@ | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,9 +7,11 @@ PSIZE = 0x1000 | |||
| STPDBOOT_MAGIC = 0x53545044 | ||||
| 
 | ||||
| ; --------- VERSION ------------- | ||||
| VERSION_MAJOR = 1 | ||||
| VERSION_MINOR = 0 | ||||
| VERSION_COMMIT = "@COMMIT@" | ||||
| VERSION_MAJOR  = @MAJOR@ | ||||
| VERSION_MINOR  = @MINOR@ | ||||
| VERSION_COMMIT equ "@COMMIT@" | ||||
| VERSION_FULL   equ "@FULLVERSION@" | ||||
| BUILD_DATE     equ "@DATE@" | ||||
| 
 | ||||
| ; ------------- OTHER ----------- | ||||
| CR   = 0x0D | ||||
|  | @ -16,7 +16,10 @@ vga_console_clear: | |||
| 	rep stosb | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: vga_console_putc | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    AL - charactere to print | ||||
| vga_console_putc: | ||||
| 
 | ||||
| 	ret | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,3 +0,0 @@ | |||
| irq_timer: | ||||
| 	iret  | ||||
| 
 | ||||
|  | @ -1,9 +1,15 @@ | |||
| 	;; File: isr.inc | ||||
| macro ISR [name,error] { | ||||
| forward | ||||
| 	dd isr_#name
 | ||||
| forward | ||||
| 	local szIntName | ||||
|  szIntName db  `name#, 0
 | ||||
| forward | ||||
| 	isr_#name#:
 | ||||
| 		cli | ||||
| 		mov esi, szIntName | ||||
| 		call klog | ||||
| 		if error eq 0 | ||||
| 		push 0 | ||||
| 		end if | ||||
|  | @ -25,6 +31,17 @@ idt_setup: | |||
| 	inc ecx | ||||
| 	cmp ecx, 32 | ||||
| 	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 eax, isr_syscall | ||||
|  | @ -49,6 +66,9 @@ aInterruptGate: | |||
| .end: | ||||
| 
 | ||||
| 
 | ||||
| irq_dummy: | ||||
| 	iret | ||||
| 
 | ||||
| isr_common: | ||||
| 	pusha | ||||
| 
 | ||||
|  | @ -61,6 +81,9 @@ isr_common: | |||
| 	mov fs, ax | ||||
| 	mov gs, ax | ||||
| 
 | ||||
| 	mov eax, [esp+IntFrame.intno] | ||||
| 	push eax | ||||
| 
 | ||||
| 	mov esi, szMsgInterrupt | ||||
| 	call klog  | ||||
| 
 | ||||
|  | @ -110,4 +133,4 @@ ISR \ | |||
| 	security_exception, 0, \ | ||||
| 	reserved31, 0 | ||||
| 
 | ||||
| szMsgInterrupt db "Interrupt", 0 | ||||
| szMsgInterrupt db "Interrupt (int: %x)", 0 | ||||
|  |  | |||
|  | @ -63,7 +63,7 @@ kmain: | |||
| 
 | ||||
| 	call idt_setup | ||||
| 
 | ||||
| 	int 0x42 | ||||
| 	;int 0x42 | ||||
| 
 | ||||
| .halt: | ||||
| 	hlt | ||||
|  | @ -84,7 +84,7 @@ kmain: | |||
| 	include 'pic.inc' | ||||
| 
 | ||||
| 
 | ||||
| szMsgKernelAlive db "Kernel is alive", 0 | ||||
| szMsgKernelAlive db "Kernel (", VERSION_FULL , ") is alive", 0 | ||||
| szErrorBootProtocol db "Error: wrong magic number", 0 | ||||
| 
 | ||||
| boot_structure BootInfo | ||||
|  |  | |||
|  | @ -50,6 +50,20 @@ pic_init: | |||
| 
 | ||||
| 	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: | ||||
| 	mov al, 0xFF | ||||
| 	out PIC1_DATA, al | ||||
|  |  | |||
|  | @ -133,7 +133,7 @@ struc IDTGate { | |||
| 	;; > +--------------- |----------------+-----------------|-----------------+ | ||||
| 
 | ||||
| 
 | ||||
| struc intframe { | ||||
| struc IntFrame { | ||||
| 	;; registers | ||||
| 	.edi dd ? | ||||
| 	.esi dd ? | ||||
|  | @ -161,3 +161,7 @@ struc intframe { | |||
| 	.useresp  dd ? | ||||
| 	.ss       dd ? | ||||
| } | ||||
| virtual at 0 | ||||
|   IntFrame IntFrame | ||||
|   sizeof.IntFrame: | ||||
| end virtual | ||||
|  |  | |||
|  | @ -1,5 +1,7 @@ | |||
| SYSCALL_EXIT = 0x01 | ||||
| SYSCALL_FORK = 0x02 | ||||
| SYSCALL_EXIT  = 0x01 | ||||
| SYSCALL_FORK  = 0x02 | ||||
| SYSCALL_READ  = 0x03 | ||||
| SYSCALL_WRITE = 0x04 | ||||
| 
 | ||||
| isr_syscall: | ||||
| 	push eax | ||||
|  |  | |||
							
								
								
									
										10
									
								
								tools/git-version → tools/version.sh
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										10
									
								
								tools/git-version → tools/version.sh
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							|  | @ -6,6 +6,9 @@ if [ ! -n "$vers" ]; then | |||
| 	vers="0.0" | ||||
| fi | ||||
| 
 | ||||
| major="$(echo -n "${vers}" | cut -d. -f1)" | ||||
| minor="$(echo -n "${vers}" | cut -d. -f1)" | ||||
| 
 | ||||
| commit="$(git rev-parse --short HEAD)" | ||||
| 
 | ||||
| full_vers="${vers}-${commit}" | ||||
|  | @ -13,4 +16,9 @@ if [ -n "$(git status)" ]; then | |||
| 	full_vers="${full_vers}-dirty" | ||||
| 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" | ||||
		Loading…
	
	Add table
		
		Reference in a new issue