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 | *.mod | ||||||
| webring.json | webring.json | ||||||
| webring.txt | webring.txt | ||||||
|  | kernel/const.inc | ||||||
|  |  | ||||||
|  | @ -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 $@ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  | @ -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 | ||||||
| 
 |  | ||||||
|  |  | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| irq_timer: |  | ||||||
| 	iret  |  | ||||||
| 
 |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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
									
								
							
							
						
						
									
										10
									
								
								tools/git-version → tools/version.sh
									
										
									
									
									
										
										
										Executable file → Normal 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" | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue