diff options
| author | Jake Mannens <jake72360@gmail.com> | 2018-07-14 03:42:12 +1000 |
|---|---|---|
| committer | Jake Mannens <jake72360@gmail.com> | 2018-07-14 03:42:12 +1000 |
| commit | 35685c20a5dc299edf6f3b76ed898a2e71d0e457 (patch) | |
| tree | 0c4ef9eb71eedb2a3d414b6454f86529400a717e /kernel/boot.s | |
| parent | be74842e37ad54f4fd18ae647e2bdf3e435a0fb8 (diff) | |
con_init() is now called during the kernel's boot sequence in kboot()
rather than in kmain() as some subsystems may now require early console
I/O.
Added 16-bit read/write I/O functions to asm/io.h. These functions are
inw() and outw() respectively.
Added the file kernel/fs.h which will contain definitions relating to
filesystem functions.
Defined the type off_t as a signed 32-bit value in sys/types.h. This
type will be required for filesystem functionality.
Added the directory 'kernel/fs' to the project's source tree. The
kernel's makefile has been updated accordingly. This directory will
contain any source files relating to filesystem functionality (both
assembly and C files).
Added the file 'fs/hd.c' to the kernel's source tree. This file
currently contains three main functions (which are defined in
kernel/hd.h). These functions are as follows; hd_init() to enumerate and
initialize the hard disks, hd_read() to read sectors from the disk and
hd_write() to write sectors to the disk. Currently, all transfers are
done in ATA PIO mode using polling, however this will change in future.
The function hd_init() is called during the kernel's boot sequence in
kboot().
Added the file hd.img to the project's root directory. This is a 20MB
raw image file that will be used by Qemu as a 20MB hard disk. The main
makefile has been updated to tell Qemu to use this file on launch.
Diffstat (limited to 'kernel/boot.s')
| -rw-r--r-- | kernel/boot.s | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/kernel/boot.s b/kernel/boot.s index 98732f6..96f0e43 100644 --- a/kernel/boot.s +++ b/kernel/boot.s @@ -2,8 +2,11 @@ global gdt global idt global kboot global register_isr +extern con_init +extern hd_init extern kmain extern paging_init +extern printk extern syscall_init extern timer_init extern traps_init @@ -24,10 +27,18 @@ kboot: ; WARNING: don't change this without changing the corresponding ; entries in the TSS constructor in sched.c mov esp, 0x80000 - ; setup descriptor tables + ; setup descriptor tables and enable paging call flush_gdt call paging_init call flush_idt + ; initialize the console + call con_init + ; add this point, we can display *some* output + push .msg + call printk + add esp, 4 + ; initialize the disk interface + call hd_init ; last minute setup, then transfer to kmain call timer_init call kmain @@ -35,6 +46,7 @@ kboot: ; disable interrupts and halt the system. cli hlt +.msg: db "Kernel booting...", 10, 0 gdt: ; null descriptor |
