summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-06-24 13:53:31 +0200
committerMichal Idziorek <m.i@gmx.at>2014-06-24 13:53:31 +0200
commita99ca43066ba246475809a0e805bf52e8195debd (patch)
tree1883030e358c15231599160ff1ce027b0cc20d22 /README
Initial commit of FoolOS
FoolOS - the most useless OS in history.
Diffstat (limited to 'README')
-rw-r--r--README73
1 files changed, 73 insertions, 0 deletions
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 <m.i@gmx.at>
+
+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
+
+
+