refactor: reorganize files (wip)
This commit is contained in:
		
							parent
							
								
									4d5bbe3003
								
							
						
					
					
						commit
						ea2f09a44d
					
				
					 10 changed files with 71 additions and 112 deletions
				
			
		| 
						 | 
				
			
			@ -1,21 +1,6 @@
 | 
			
		|||
	;; File: bootinfo.inc
 | 
			
		||||
 | 
			
		||||
	;; Struct: BootInfoRange
 | 
			
		||||
struc BootInfoRange {
 | 
			
		||||
	.base dd ?
 | 
			
		||||
	.legth dd ?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	;; Struct: BootInfo
 | 
			
		||||
	;;
 | 
			
		||||
	;; StupidOS boot protocol structure
 | 
			
		||||
struc BootInfo {
 | 
			
		||||
	.mmap         dd 4*2*20 dup(0)
 | 
			
		||||
	.kernel_start dd ?
 | 
			
		||||
	.kernel_size  dd ?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	;; Section: Globals
 | 
			
		||||
	include '../../kernel/sys/bootinfo.inc'
 | 
			
		||||
 | 
			
		||||
	;; Constant: BOOTINFO_MEMORY_LIMIT
 | 
			
		||||
BOOTINFO_MEMORY_LIMIT = 0xFFFFF000
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,8 @@ TARGET = stpdldr.sys
 | 
			
		|||
LOADER_SRCS	= loader.asm \
 | 
			
		||||
				../common/const.inc \
 | 
			
		||||
				../common/bootinfo.inc \
 | 
			
		||||
				../../kernel/sys/bootinfo.inc \
 | 
			
		||||
				../../kernel/sys/register.inc \
 | 
			
		||||
				video.inc \
 | 
			
		||||
				memory.inc \
 | 
			
		||||
				logger.inc \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ _start:
 | 
			
		|||
 | 
			
		||||
	; enable protected mode
 | 
			
		||||
	mov eax, cr0
 | 
			
		||||
	or al, 1
 | 
			
		||||
	or al, CR0_PE
 | 
			
		||||
	mov cr0, eax
 | 
			
		||||
 | 
			
		||||
	; reload ds, es, fs, gs, ss
 | 
			
		||||
| 
						 | 
				
			
			@ -147,6 +147,7 @@ _start:
 | 
			
		|||
	include 'video.inc'
 | 
			
		||||
	include 'gdt.inc'
 | 
			
		||||
	include '../common/bootinfo.inc'
 | 
			
		||||
	include '../../kernel/sys/register.inc'
 | 
			
		||||
 | 
			
		||||
uDrive    rb 1
 | 
			
		||||
bDriveLBA db FALSE
 | 
			
		||||
| 
						 | 
				
			
			@ -237,7 +238,7 @@ common32:
 | 
			
		|||
	mov cr3, eax
 | 
			
		||||
 | 
			
		||||
	mov eax, cr0
 | 
			
		||||
	or eax, 0x80010000
 | 
			
		||||
	or eax, CR0_PG or CR0_WP
 | 
			
		||||
	mov cr0, eax
 | 
			
		||||
 | 
			
		||||
	mov eax, STPDBOOT_MAGIC
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
	;; File: video.inc
 | 
			
		||||
 | 
			
		||||
struc VesaInfo
 | 
			
		||||
{
 | 
			
		||||
	.Signature             dd 'VBE2'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ Timestamp: Updated yyyy/mm/dd
 | 
			
		|||
# These are indexes you deleted, so Natural Docs will not add them again
 | 
			
		||||
# unless you remove them from this line.
 | 
			
		||||
 | 
			
		||||
Don't Index: Classes, Macros, Variables
 | 
			
		||||
Don't Index: Macros, Classes, Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# --------------------------------------------------------------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ Group: BootLoader  {
 | 
			
		|||
      File: loader.asm  (boot/loader/loader.asm)
 | 
			
		||||
      File: logger.inc  (boot/loader/logger.inc)
 | 
			
		||||
      File: memory.inc  (boot/loader/memory.inc)
 | 
			
		||||
      File: video_setup  (boot/loader/video.inc)
 | 
			
		||||
      File: video.inc  (boot/loader/video.inc)
 | 
			
		||||
      }  # Group: Loader
 | 
			
		||||
 | 
			
		||||
   Group: Common  {
 | 
			
		||||
| 
						 | 
				
			
			@ -88,11 +88,22 @@ Group: BootLoader  {
 | 
			
		|||
 | 
			
		||||
Group: Kernel  {
 | 
			
		||||
 | 
			
		||||
   File: bootinfo.inc  (kernel/bootinfo.inc)
 | 
			
		||||
   File: Introduction  (kernel/intro.txt)
 | 
			
		||||
   File: kernel.asm  (kernel/kernel.asm)
 | 
			
		||||
   File: klog  (kernel/klog.inc)
 | 
			
		||||
   File: vga_console_clear  (kernel/dev/vga_console.inc)
 | 
			
		||||
   File: klog.inc  (kernel/klog.inc)
 | 
			
		||||
 | 
			
		||||
   Group: Devices  {
 | 
			
		||||
 | 
			
		||||
      File: IBM PC/AT  (kernel/dev/at/intro.txt)
 | 
			
		||||
      File: vga_console.inc  (kernel/dev/vga_console.inc)
 | 
			
		||||
      }  # Group: Devices
 | 
			
		||||
 | 
			
		||||
   Group: System Includes  {
 | 
			
		||||
 | 
			
		||||
      File: bootinfo.inc  (kernel/sys/bootinfo.inc)
 | 
			
		||||
      File: mmu.inc  (kernel/sys/mmu.inc)
 | 
			
		||||
      File: registers.inc  (kernel/sys/register.inc)
 | 
			
		||||
      }  # Group: System Includes
 | 
			
		||||
 | 
			
		||||
   Group: Memory Manager  {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +0,0 @@
 | 
			
		|||
#ifndef ECHFS_H
 | 
			
		||||
# define ECHFS_H 1
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	uint8_t jmp[4];
 | 
			
		||||
	uint8_t signature[8];
 | 
			
		||||
 | 
			
		||||
} EchFSIdentityTable;
 | 
			
		||||
 | 
			
		||||
#endif /* !ECHFS_H */
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ kmain:
 | 
			
		|||
	call klog
 | 
			
		||||
	jmp .halt
 | 
			
		||||
 | 
			
		||||
	include 'bootinfo.inc'
 | 
			
		||||
	include 'sys/bootinfo.inc'
 | 
			
		||||
	include 'klog.inc'
 | 
			
		||||
	include 'dev/vga_console.inc'
 | 
			
		||||
	include 'mm/mm.inc'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,6 @@
 | 
			
		|||
	;; File: klog.inc
 | 
			
		||||
	;; Kernel logging utilities
 | 
			
		||||
 | 
			
		||||
CMOS_ADDRESS = 0x70
 | 
			
		||||
CMOS_DATA    = 0x71
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -7,6 +10,10 @@ CMOS_REG_HOUR   = 0x04
 | 
			
		|||
 | 
			
		||||
COM1 = 0x3F8
 | 
			
		||||
 | 
			
		||||
	;; Function: klog_print
 | 
			
		||||
	;;
 | 
			
		||||
	;; In:
 | 
			
		||||
	;;    ESI - Null-terminated string to print
 | 
			
		||||
klog_print:
 | 
			
		||||
	mov dx, COM1
 | 
			
		||||
@@:
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +25,9 @@ klog_print:
 | 
			
		|||
@@:
 | 
			
		||||
	ret
 | 
			
		||||
 | 
			
		||||
klog_print_date:
 | 
			
		||||
	;; Function: klog_print_time
 | 
			
		||||
	;;
 | 
			
		||||
klog_print_time:
 | 
			
		||||
@@:
 | 
			
		||||
	mov al, 0x0A
 | 
			
		||||
	out CMOS_ADDRESS, al
 | 
			
		||||
| 
						 | 
				
			
			@ -114,7 +123,7 @@ klog_print_hex:
 | 
			
		|||
	;; Function: klog
 | 
			
		||||
	;; Output kernel log
 | 
			
		||||
klog:
 | 
			
		||||
	call klog_print_date
 | 
			
		||||
	call klog_print_time
 | 
			
		||||
 | 
			
		||||
.loop:
 | 
			
		||||
	mov al, [esi]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,23 +17,23 @@
 | 
			
		|||
	;; CR0_NW - Not-write through
 | 
			
		||||
	;; CR0_CD - Cache disable
 | 
			
		||||
	;; CR0_PG - Paging
 | 
			
		||||
CR0_PE equ 1 << 0
 | 
			
		||||
CR0_MP equ 1 << 1
 | 
			
		||||
CR0_EM equ 1 << 2
 | 
			
		||||
CR0_TS equ 1 << 3
 | 
			
		||||
CR0_ET equ 1 << 4
 | 
			
		||||
CR0_NE equ 1 << 5
 | 
			
		||||
CR0_WP equ 1 << 16
 | 
			
		||||
CR0_AM equ 1 << 18
 | 
			
		||||
CR0_NW equ 1 << 29
 | 
			
		||||
CR0_CD equ 1 << 30
 | 
			
		||||
CR0_PG equ 1 << 31
 | 
			
		||||
CR0_PE = 0x00000001
 | 
			
		||||
CR0_MP = 0x00000002
 | 
			
		||||
CR0_EM = 0x00000004
 | 
			
		||||
CR0_TS = 0x00000008
 | 
			
		||||
CR0_ET = 0x00000010
 | 
			
		||||
CR0_NE = 0x00000020
 | 
			
		||||
CR0_WP = 0x00010000
 | 
			
		||||
CR0_AM = 0x00040000
 | 
			
		||||
CR0_NW = 0x20000000
 | 
			
		||||
CR0_CD = 0x40000000
 | 
			
		||||
CR0_PG = 0x80000000
 | 
			
		||||
 | 
			
		||||
	;; Defines: CR3
 | 
			
		||||
	;; CR3_PWT - Page-level Write-Through
 | 
			
		||||
	;; CR3_PCD - Page-level Cache Disable
 | 
			
		||||
CR3_PWT equ 1 << 3
 | 
			
		||||
CR3_PCD equ 1 << 4
 | 
			
		||||
CR3_PWT = 0x08
 | 
			
		||||
CR3_PCD = 0x10
 | 
			
		||||
 | 
			
		||||
	;; Defines: CR4
 | 
			
		||||
	;; CR4_VME        - Virtual 8086 Mode Extensions
 | 
			
		||||
| 
						 | 
				
			
			@ -60,67 +60,26 @@ CR3_PCD equ 1 << 4
 | 
			
		|||
	;; CR4_PKE        - Protection Key Enable
 | 
			
		||||
	;; CR4_CET        - Control-flow Enforcement Technology
 | 
			
		||||
	;; CR4_PKS        - Enable Protection Keys for Supervisor-Mode Pages
 | 
			
		||||
CR4_VME        equ 1 << 0
 | 
			
		||||
CR4_PVI        equ 1 << 1
 | 
			
		||||
CR4_TSD        equ 1 << 2
 | 
			
		||||
CR4_DE         equ 1 << 3
 | 
			
		||||
CR4_PSE        equ 1 << 4
 | 
			
		||||
CR4_PAE        equ 1 << 5
 | 
			
		||||
CR4_MCE        equ 1 << 6
 | 
			
		||||
CR4_PGE        equ 1 << 7
 | 
			
		||||
CR4_PCE        equ 1 << 8
 | 
			
		||||
CR4_OSDXSR     equ 1 << 9
 | 
			
		||||
CR4_OSXMMEXCPT equ 1 << 10
 | 
			
		||||
CR4_UMIP       equ 1 << 11
 | 
			
		||||
CR4_VMXE       equ 1 << 13
 | 
			
		||||
CR4_SMXE       equ 1 << 14
 | 
			
		||||
CR4_FSGSBASE   equ 1 << 16
 | 
			
		||||
CR4_PCIDE      equ 1 << 17
 | 
			
		||||
CR4_OSXSAVE    equ 1 << 18
 | 
			
		||||
CR4_SMEP       equ 1 << 20
 | 
			
		||||
CR4_SMAP       equ 1 << 21
 | 
			
		||||
CR4_PKE        equ 1 << 22
 | 
			
		||||
CR4_CET        equ 1 << 23
 | 
			
		||||
CR4_PKS        equ 1 << 24
 | 
			
		||||
CR4_VME        = 0x0000001
 | 
			
		||||
CR4_PVI        = 0x0000002
 | 
			
		||||
CR4_TSD        = 0x0000004
 | 
			
		||||
CR4_DE         = 0x0000008
 | 
			
		||||
CR4_PSE        = 0x0000010
 | 
			
		||||
CR4_PAE        = 0x0000020
 | 
			
		||||
CR4_MCE        = 0x0000040
 | 
			
		||||
CR4_PGE        = 0x0000080
 | 
			
		||||
CR4_PCE        = 0x0000100
 | 
			
		||||
CR4_OSDXSR     = 0x0000200
 | 
			
		||||
CR4_OSXMMEXCPT = 0x0000400
 | 
			
		||||
CR4_UMIP       = 0x0000800
 | 
			
		||||
CR4_VMXE       = 0x0002000
 | 
			
		||||
CR4_SMXE       = 0x0004000
 | 
			
		||||
CR4_FSGSBASE   = 0x0010000
 | 
			
		||||
CR4_PCIDE      = 0x0020000
 | 
			
		||||
CR4_OSXSAVE    = 0x0040000
 | 
			
		||||
CR4_SMEP       = 0x0100000
 | 
			
		||||
CR4_SMAP       = 0x0200000
 | 
			
		||||
CR4_PKE        = 0x0400000
 | 
			
		||||
CR4_CET        = 0x0800000
 | 
			
		||||
CR4_PKS        = 0x1000000
 | 
			
		||||
 | 
			
		||||
	;; =========================================================================
 | 
			
		||||
	;; eflags
 | 
			
		||||
	;; =========================================================================
 | 
			
		||||
 | 
			
		||||
	;; Defines: EFLAGS
 | 
			
		||||
	;; EFLAGS_CF    - Carry flag
 | 
			
		||||
	;; EFLAGS_PF    - Parity flag
 | 
			
		||||
	;; EFLAGS_AF    - Auxiliary flag
 | 
			
		||||
	;; EFLAGS_ZF    - Zero flag
 | 
			
		||||
	;; EFLAGS_SF    - Sign flag
 | 
			
		||||
	;; EFLAGS_TF    - Trap flag
 | 
			
		||||
	;; EFLAGS_IF    - Interrupt enable flag
 | 
			
		||||
	;; EFLAGS_DF    - Direction flag
 | 
			
		||||
	;; EFLAGS_OF    - Overflow flag
 | 
			
		||||
	;; EFLAGS_IOPL1 - I/O privilege flag
 | 
			
		||||
	;; EFLAGS_IOPL2 - I/O privilege flag
 | 
			
		||||
	;; EFLAGS_NT    - Nested task flag
 | 
			
		||||
	;; EFLAGS_RF    - Resume flag
 | 
			
		||||
	;; EFLAGS_VM    - Virtual 8086 mode flag
 | 
			
		||||
	;; EFLAGS_AC    - Alignment check
 | 
			
		||||
	;; EFLAGS_VIF   - Virtual Interrupt flag
 | 
			
		||||
	;; EFLAGS_VIP   - Virtual Interrupt pending
 | 
			
		||||
	;; EFLAGS_ID    - CPUID instruction available
 | 
			
		||||
EFLAGS_CF    equ 1 << 0
 | 
			
		||||
EFLAGS_PF    equ 1 << 2
 | 
			
		||||
EFLAGS_AF    equ 1 << 4
 | 
			
		||||
EFLAGS_ZF    equ 1 << 6
 | 
			
		||||
EFLAGS_SF    equ 1 << 7
 | 
			
		||||
EFLAGS_TF    equ 1 << 8
 | 
			
		||||
EFLAGS_IF    equ 1 << 9
 | 
			
		||||
EFLAGS_DF    equ 1 << 10
 | 
			
		||||
EFLAGS_OF    equ 1 << 11
 | 
			
		||||
EFLAGS_IOPL1 equ 1 << 12
 | 
			
		||||
EFLAGS_IOPL2 equ 1 << 13
 | 
			
		||||
EFLAGS_NT    equ 1 << 14
 | 
			
		||||
EFLAGS_RF    equ 1 << 16
 | 
			
		||||
EFLAGS_VM    equ 1 << 17
 | 
			
		||||
EFLAGS_AC    equ 1 << 18
 | 
			
		||||
EFLAGS_VIF   equ 1 << 19
 | 
			
		||||
EFLAGS_VIP   equ 1 << 20
 | 
			
		||||
EFLAGS_ID    equ 1 << 21
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue