From a99ca43066ba246475809a0e805bf52e8195debd Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Tue, 24 Jun 2014 13:53:31 +0200 Subject: Initial commit of FoolOS FoolOS - the most useless OS in history. --- README | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 README (limited to 'README') diff --git a/README b/README new file mode 100644 index 0000000..eba076c --- /dev/null +++ b/README @@ -0,0 +1,73 @@ +Welcome to FoolOS +================= + +Copyright M.Idziorek 2014 + +NOTES +===== + +cli; disable interrupts +lgdt +lidt +sti; enable interrupts + +Linux Startup x86 +================= + +1. arch/x86/boot/header.S + +Contains the header and linux 16 bit code. + +This code should be entered with a bootloader at the address specified +within the header (as _start) which will put us at 'start_of_setup' + +Direct loading will put us at 'start2' at the very start which will +show an error message + +If everyhing goes right we will enter the 16-bit real mode C module +with: + +call main ; should not return + +2. arch/x86/boot/main.c + +void main(void) will do some checks and detections (cpu,mem,..) and +invoke: go_to_protected_mode(); + +3. arch/x86/boot/pm.c + +go_to_protected_mode() - will disable interrupts and set up the initial +idt and gdt descriptor tables before calling: protected_mode_jump() and +passing the address of code32_start. + +4. arch/x86/boot/pmjump.S + +back in assembly-world the actual transition is made inside +'protected_mode_jump' and we move on to 'in_pm32' where the data segment +is set up and we jmpl to the 32-bit entry point of the kernel. + +5. arch/x86/kernel/head32.c (assumption!?) + +void i386_start_kernel(void) + +6. init/main.c + +start_kernel(void) + +setup_arch()!! + +Interrupts +========== + +arch/x86/include/asm/irq_vectors.h each entry is 8 bytes + +ISA interrupts: + +0x30 0x0000 0x0000 0x0000 0x0000 +0x31 +0x32 +.. +0x3f + + + -- cgit v1.2.3