chore: remove old klog.inc and rename klog.new.inc
				
					
				
			This commit is contained in:
		
							parent
							
								
									567a9388d8
								
							
						
					
					
						commit
						dbf5dd9a91
					
				
					 4 changed files with 179 additions and 399 deletions
				
			
		|  | @ -118,7 +118,7 @@ kmain: | |||
| 	call klog | ||||
| 	jmp .halt | ||||
| 
 | ||||
| 	include 'klog.new.inc' | ||||
| 	include 'klog.inc' | ||||
| 	include 'dev/console.inc' | ||||
| 	include 'dev/dev.inc' | ||||
| 	include 'mm/bootstrap.inc' | ||||
|  |  | |||
							
								
								
									
										282
									
								
								kernel/klog.inc
									
										
									
									
									
								
							
							
						
						
									
										282
									
								
								kernel/klog.inc
									
										
									
									
									
								
							|  | @ -1,59 +1,81 @@ | |||
| 	;; File: klog.inc | ||||
| 	;; Kernel logging utilities | ||||
| 	;; | ||||
| 
 | ||||
| COM1 = 0x3F8 | ||||
| 
 | ||||
| 	;; Function: klog_print | ||||
| 	;; Function: _klog_print_str | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    ESI - Null-terminated string to print | ||||
| klog_print: | ||||
| 	;; In: EAX - Null-terminated string to print | ||||
| _klog_print_str: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 	 | ||||
| 	push esi | ||||
| 	mov dx, COM1 | ||||
| 	mov esi, eax | ||||
| @@: | ||||
| 	lodsb | ||||
| 	or al, al | ||||
| 	jz @f | ||||
| 	out dx, al | ||||
| 
 | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 	 | ||||
| 	jmp @b | ||||
| @@: | ||||
| 	pop esi | ||||
| 	leave | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: klog_print_integer | ||||
| 	;; Function: _klog_print_int | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EDI - number | ||||
| 	;; | ||||
| klog_print_integer: | ||||
| 	test edi, edi | ||||
| 	js .print_minus | ||||
| 	;;    EAX - number | ||||
| _klog_print_int: | ||||
| 	test eax, eax | ||||
| 	jns @f | ||||
| 	; TODO print '-' | ||||
| 	mov ecx, eax | ||||
| 	mov dx, COM1 | ||||
| 	mov al, '-' | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 	mov eax, ecx | ||||
| @@: | ||||
| 	mov ecx, eax | ||||
| 	sar ecx, 31 | ||||
| 	xor ecx, eax | ||||
| 	sub ecx, eax | ||||
| 	 | ||||
| 	mov ecx, eax | ||||
| 	call _klog_print_unsigned | ||||
| 
 | ||||
| .print_minus: | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: klog_print_unsigned | ||||
| 	;; Function: _klog_print_unsigned | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;   EDI - number | ||||
| 	;; | ||||
| klog_print_unsigned: | ||||
| 	push edx | ||||
| 	;;     EAX - number | ||||
| _klog_print_unsigned: | ||||
| 	push ebx | ||||
| 	xor ecx, ecx | ||||
| 	mov eax, edi | ||||
| 	mov ebx, 10 | ||||
| .loop_calc: | ||||
| 	xor ecx, ecx | ||||
| @@: | ||||
| 	xor edx, edx | ||||
| 	div ebx | ||||
| 	push edx | ||||
| 	inc ecx | ||||
| 	or eax, eax | ||||
| 	jnz .loop_calc | ||||
| .loop_print: | ||||
| 	jnz @b | ||||
| 
 | ||||
| @@: | ||||
| 	pop eax | ||||
| 	add al, '0' | ||||
| 	add al, 0 | ||||
| 	mov dx, COM1 | ||||
| 	out dx, al | ||||
| 	pusha | ||||
|  | @ -61,17 +83,65 @@ klog_print_unsigned: | |||
| 	popa | ||||
| 
 | ||||
| 	dec ecx | ||||
| 
 | ||||
| 	or cl, cl | ||||
| 	jnz .loop_print | ||||
| 	 | ||||
| 	jnz @b | ||||
| 
 | ||||
| 	pop ebx | ||||
| 	pop edx | ||||
| 	 | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: klog_print_time | ||||
| 	;; Function: _klog_print_hex | ||||
| 	;; | ||||
| klog_print_time: | ||||
| 	;; In: | ||||
| 	;;    EAX - number | ||||
| _klog_print_hex: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 
 | ||||
| 	push edi | ||||
| 	mov edi, eax | ||||
| 	 | ||||
| 	mov eax, szHexPrefix | ||||
| 	call _klog_print_str | ||||
| 
 | ||||
| 	or edi, edi | ||||
| 	jz .print_zero | ||||
| 
 | ||||
| 	xor cl, cl | ||||
| .begin: | ||||
| 	cmp cl, 8 | ||||
| 	je .print_number | ||||
| 	rol edi, 4 | ||||
| 	mov eax, edi | ||||
| 	and eax, 0xF | ||||
| 	mov al, byte [sDigit + eax] | ||||
| 	mov [szKlogBuffer + ecx], al | ||||
| 	inc cl | ||||
| 	jmp .begin | ||||
| 
 | ||||
| .print_zero: | ||||
| 	mov al, '0' | ||||
| 	mov dx, COM1 | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 	jmp .end | ||||
| 
 | ||||
| .print_number: | ||||
| 	mov [szKlogBuffer + ecx], byte 0 | ||||
| 	mov eax, szKlogBuffer | ||||
| 	call _klog_print_str | ||||
| 	 | ||||
| .end:	 | ||||
| 	pop edi | ||||
| 	leave | ||||
| 	ret | ||||
| 	 | ||||
| 	;; Function: _klog_print_time | ||||
| 	;;  | ||||
| _klog_print_time: | ||||
| 	; wait CMOS ready | ||||
| @@: | ||||
| 	mov al, 0x0A | ||||
| 	out CMOS_COMMAND, al | ||||
|  | @ -118,120 +188,122 @@ klog_print_time: | |||
| 
 | ||||
| 	add ah, 0x30 | ||||
| 	add al, 0x30 | ||||
| 
 | ||||
| 	mov [szTime + 7], ah | ||||
| 	mov [szTime + 8], al | ||||
| 
 | ||||
| 	mov eax, szTime | ||||
| 	call _klog_print_str | ||||
| 
 | ||||
| 	push esi | ||||
| 	mov esi, szTime | ||||
| 	call klog_print | ||||
| 	pop esi | ||||
| 
 | ||||
| 	ret | ||||
| 
 | ||||
| klog_print_hex: | ||||
| 	push esi | ||||
| 	mov esi, szHexPrefix | ||||
| 	call klog_print | ||||
| 	pop esi | ||||
| 
 | ||||
| 	or edi, edi | ||||
| 	jz .print_zero | ||||
| 	push esi | ||||
| 	mov esi, szKlogBuffer | ||||
| 	xor cl, cl | ||||
| .loop: | ||||
| 	cmp cl, 8 | ||||
| 	je .print_number | ||||
| 	rol edi, 4 | ||||
| 	mov eax, edi | ||||
| 	and eax, 0xF | ||||
| 	mov al, byte [sDigit + eax] | ||||
| 	mov [esi], al | ||||
| 	inc esi | ||||
| 	inc cl | ||||
| 	jmp .loop | ||||
| .print_zero: | ||||
| 	mov al, '0' | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 	jmp .end | ||||
| .print_number: | ||||
| 	mov [esi], byte 0 | ||||
| 	mov esi, szKlogBuffer | ||||
| 	call klog_print | ||||
| 	pop esi | ||||
| .end: | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: klog | ||||
| 	;;  | ||||
| 	;; Output kernel log | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EAX      - null-terminated string | ||||
| 	;;    STACK[X] - var_arg | ||||
| klog: | ||||
| 	call klog_print_time | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 
 | ||||
| .loop: | ||||
| 	push esi | ||||
| 	mov esi, eax | ||||
| 	 | ||||
| 	; display log time | ||||
| 	call _klog_print_time | ||||
| 
 | ||||
| 	mov ecx, 4 | ||||
| .begin: | ||||
| 	mov al, [esi] | ||||
| 	or al, al | ||||
| 	jz .end | ||||
| 	; search for formating | ||||
| 	cmp al, '%' | ||||
| 	jne .putchar | ||||
| 	; read next char | ||||
| 	inc esi | ||||
| 	mov al, [esi] | ||||
| 
 | ||||
| 	; check if another '%' | ||||
| 	cmp al, '%' | ||||
| 	je .putchar | ||||
| 	 | ||||
| 	;  check if string format | ||||
| 	cmp al, 's' | ||||
| 	jne .check_x | ||||
| 	mov edi, esi | ||||
| 	pop eax | ||||
| 	pop esi | ||||
| 	push eax | ||||
| 	call klog_print | ||||
| 	mov esi, edi | ||||
| 	jne @f | ||||
| 	; print string | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_str | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 	 | ||||
| 	jmp .next | ||||
| .check_x: | ||||
| 
 | ||||
| 	; check if hex format | ||||
| @@: | ||||
| 	cmp al, 'x' | ||||
| 	jne .check_d | ||||
| 	pop eax | ||||
| 	pop edi | ||||
| 	push eax | ||||
| 	call klog_print_hex | ||||
| 	jne @f | ||||
| 
 | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_hex | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 
 | ||||
| 	jmp .next | ||||
| .check_d: | ||||
| 
 | ||||
| 	; check if int format | ||||
| @@: | ||||
| 	cmp al, 'd' | ||||
| 	jne .check_u | ||||
| 	pop eax | ||||
| 	pop edi | ||||
| 	push eax | ||||
| 	call klog_print_integer | ||||
| 	jne @f | ||||
| 
 | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_int | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 
 | ||||
| 	jmp .next | ||||
| .check_u: | ||||
| 
 | ||||
| 	; check if unsigned | ||||
| @@:  | ||||
| 	cmp al, 'u' | ||||
| 	jne .unknown_format | ||||
| 	pop eax | ||||
| 	pop edi | ||||
| 	push eax | ||||
| 	call klog_print_unsigned | ||||
| 	jne @f | ||||
| 
 | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_unsigned | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 
 | ||||
| 	jmp .next | ||||
| .unknown_format: | ||||
| 	 | ||||
| 	; unknown format | ||||
| @@: | ||||
| 	mov al, '?' | ||||
| .putchar: | ||||
| 
 | ||||
| .putchar: 			; XXX: fix this mess | ||||
| 	mov dx, COM1 | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 
 | ||||
| .next: | ||||
| 	inc esi | ||||
| 	jmp .loop | ||||
| 	jmp .begin | ||||
| 
 | ||||
| .end: | ||||
| 	mov esi, szCRLF | ||||
| 	call klog_print | ||||
| 	mov eax, szCRLF | ||||
| 	call _klog_print_str | ||||
| 
 | ||||
| 	leave | ||||
| 	ret | ||||
| 
 | ||||
| szTime       db '[00:00:00] ', 0 | ||||
| szCRLF       db CR, LF, 0 | ||||
| szCRLF	     db CR, LF, 0 | ||||
| sDigit       db '0123456789ABCDEF' | ||||
| szHexPrefix  db '0x', 0 | ||||
| szHexPrefix  db '0x', 0	 | ||||
| szKlogBuffer db '00000000', 0 | ||||
|  |  | |||
|  | @ -1,292 +0,0 @@ | |||
| 	;; File: klog.inc | ||||
| 	;; Kernel logging utilities | ||||
| 	;; | ||||
| 
 | ||||
| COM1 = 0x3F8 | ||||
| 
 | ||||
| 	;; Function: _klog_print | ||||
| 	;; | ||||
| 	;; In: EAX - Null-terminated string to print | ||||
| _klog_print_str: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 	 | ||||
| 	push esi | ||||
| 	mov dx, COM1 | ||||
| 	mov esi, eax | ||||
| @@: | ||||
| 	lodsb | ||||
| 	or al, al | ||||
| 	jz @f | ||||
| 	out dx, al | ||||
| 
 | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 	 | ||||
| 	jmp @b | ||||
| @@: | ||||
| 	pop esi | ||||
| 	leave | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: _klog_print_int | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EAX - number | ||||
| _klog_print_int: | ||||
| 	test eax, eax | ||||
| 	js .print_minus | ||||
| .print_minus: | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: _klog_print_unsigned | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;     EAX - number | ||||
| _klog_print_unsigned: | ||||
| 	push ebx | ||||
| 	mov ebx, 10 | ||||
| 	xor ecx, ecx | ||||
| @@: | ||||
| 	xor edx, edx | ||||
| 	div ebx | ||||
| 	push edx | ||||
| 	inc ecx | ||||
| 	or eax, eax | ||||
| 	jnz @b | ||||
| 
 | ||||
| @@: | ||||
| 	pop eax | ||||
| 	add al, 0 | ||||
| 	mov dx, COM1 | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 
 | ||||
| 	dec ecx | ||||
| 	or cl, cl | ||||
| 	jnz @b | ||||
| 
 | ||||
| 	pop ebx | ||||
| 	 | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: _klog_print_hex | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EAX - number | ||||
| _klog_print_hex: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 
 | ||||
| 	push edi | ||||
| 	mov edi, eax | ||||
| 	 | ||||
| 	mov eax, szHexPrefix | ||||
| 	call _klog_print_str | ||||
| 
 | ||||
| 	or edi, edi | ||||
| 	jz .print_zero | ||||
| 
 | ||||
| 	xor cl, cl | ||||
| .begin: | ||||
| 	cmp cl, 8 | ||||
| 	je .print_number | ||||
| 	rol edi, 4 | ||||
| 	mov eax, edi | ||||
| 	and eax, 0xF | ||||
| 	mov al, byte [sDigit + eax] | ||||
| 	mov [szKlogBuffer + ecx], al | ||||
| 	inc cl | ||||
| 	jmp .begin | ||||
| 
 | ||||
| .print_zero: | ||||
| 	mov al, '0' | ||||
| 	mov dx, COM1 | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 	jmp .end | ||||
| 
 | ||||
| .print_number: | ||||
| 	mov [szKlogBuffer + ecx], byte 0 | ||||
| 	mov eax, szKlogBuffer | ||||
| 	call _klog_print_str | ||||
| 	 | ||||
| .end:	 | ||||
| 	pop edi | ||||
| 	leave | ||||
| 	ret | ||||
| 	 | ||||
| 	;; Function: _klog_print_time | ||||
| 	;;  | ||||
| _klog_print_time: | ||||
| 	; wait CMOS ready | ||||
| @@: | ||||
| 	mov al, 0x0A | ||||
| 	out CMOS_COMMAND, al | ||||
| 	in al, CMOS_DATA | ||||
| 	and al, 0x80 | ||||
| 	jnz @b | ||||
| 
 | ||||
| 	mov al, CMOS_REG_HOUR | ||||
| 	out CMOS_COMMAND, al | ||||
| 	in al, CMOS_DATA | ||||
| 
 | ||||
| 	mov ah, al | ||||
| 	shr ah, 4 | ||||
| 	and ah, 0xF | ||||
| 	and al, 0xF | ||||
| 
 | ||||
| 	add ah, 0x30 | ||||
| 	add al, 0x30 | ||||
| 	mov [szTime + 1], ah | ||||
| 	mov [szTime + 2], al | ||||
| 
 | ||||
| 	mov al, CMOS_REG_MINUTE | ||||
| 	out CMOS_COMMAND, al | ||||
| 	in al, CMOS_DATA | ||||
| 
 | ||||
| 	mov ah, al | ||||
| 	shr ah, 4 | ||||
| 	and ah, 0xF | ||||
| 	and al, 0xF | ||||
| 
 | ||||
| 	add ah, 0x30 | ||||
| 	add al, 0x30 | ||||
| 	mov [szTime + 4], ah | ||||
| 	mov [szTime + 5], al | ||||
| 
 | ||||
| 	mov al, CMOS_REG_SECOND | ||||
| 	out CMOS_COMMAND, al | ||||
| 	in al, CMOS_DATA | ||||
| 
 | ||||
| 	mov ah, al | ||||
| 	shr ah, 4 | ||||
| 	and ah, 0xF | ||||
| 	and al, 0xF | ||||
| 
 | ||||
| 	add ah, 0x30 | ||||
| 	add al, 0x30 | ||||
| 	mov [szTime + 7], ah | ||||
| 	mov [szTime + 8], al | ||||
| 
 | ||||
| 	mov eax, szTime | ||||
| 	call _klog_print_str | ||||
| 
 | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: klog | ||||
| 	;;  | ||||
| 	;; Output kernel log | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EAX      - null-terminated string | ||||
| 	;;    STACK[X] - var_arg | ||||
| klog: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 
 | ||||
| 	push esi | ||||
| 	mov esi, eax | ||||
| 	 | ||||
| 	; display log time | ||||
| 	call _klog_print_time | ||||
| 
 | ||||
| 	mov ecx, 4 | ||||
| .begin: | ||||
| 	mov al, [esi] | ||||
| 	or al, al | ||||
| 	jz .end | ||||
| 	; search for formating | ||||
| 	cmp al, '%' | ||||
| 	jne .putchar | ||||
| 	; read next char | ||||
| 	inc esi | ||||
| 	mov al, [esi] | ||||
| 
 | ||||
| 	; check if another '%' | ||||
| 	cmp al, '%' | ||||
| 	je .putchar | ||||
| 	 | ||||
| 	;  check if string format | ||||
| 	cmp al, 's' | ||||
| 	jne @f | ||||
| 	; print string | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_str | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 	 | ||||
| 	jmp .next | ||||
| 
 | ||||
| 	; check if hex format | ||||
| @@: | ||||
| 	cmp al, 'x' | ||||
| 	jne @f | ||||
| 
 | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_hex | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 
 | ||||
| 	jmp .next | ||||
| 
 | ||||
| 	; check if int format | ||||
| @@: | ||||
| 	cmp al, 'd' | ||||
| 	jne @f | ||||
| 
 | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_int | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 
 | ||||
| 	jmp .next | ||||
| 
 | ||||
| 	; check if unsigned | ||||
| @@:  | ||||
| 	cmp al, 'u' | ||||
| 	jne @f | ||||
| 
 | ||||
| 	mov eax, [ebp + ecx] | ||||
| 	push ecx | ||||
| 	call _klog_print_unsigned | ||||
| 	pop ecx | ||||
| 	add ecx, 4 | ||||
| 
 | ||||
| 	jmp .next | ||||
| 	 | ||||
| 	; unknown format | ||||
| @@: | ||||
| 	mov al, '?' | ||||
| 
 | ||||
| .putchar: 			; XXX: fix this mess | ||||
| 	mov dx, COM1 | ||||
| 	out dx, al | ||||
| 	pusha | ||||
| 	call cga_putc | ||||
| 	popa | ||||
| 
 | ||||
| .next: | ||||
| 	inc esi | ||||
| 	jmp .begin | ||||
| 
 | ||||
| .end: | ||||
| 	mov eax, szCRLF | ||||
| 	call _klog_print_str | ||||
| 
 | ||||
| 	leave | ||||
| 	ret | ||||
| 
 | ||||
| szTime       db '[00:00:00] ', 0 | ||||
| szCRLF	     db CR, LF, 0 | ||||
| sDigit       db '0123456789ABCDEF' | ||||
| szHexPrefix  db '0x', 0	 | ||||
| szKlogBuffer db '00000000', 0 | ||||
|  | @ -98,7 +98,7 @@ pmm_free: | |||
| 	;; Out: | ||||
| 	;;    EAX - return -1 on error | ||||
| pmm_init: | ||||
| 	mov esi, szMsgMmInit | ||||
| 	mov eax, szMsgMmInit | ||||
| 	call klog | ||||
| 
 | ||||
| 	mov eax, kend | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue