diff --git a/Asuro.iso b/Asuro.iso index 6a40b697..ab781191 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 5ba0bbcd..9fd93488 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 5ba0bbcd..9fd93488 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/bios_data_area.ppu b/lib/bios_data_area.ppu index 5582649c..383ab212 100644 Binary files a/lib/bios_data_area.ppu and b/lib/bios_data_area.ppu differ diff --git a/lib/console.ppu b/lib/console.ppu index 6a88ded3..74363dea 100644 Binary files a/lib/console.ppu and b/lib/console.ppu differ diff --git a/lib/gdt.ppu b/lib/gdt.ppu index 4f8f4492..ee1a1d55 100644 Binary files a/lib/gdt.ppu and b/lib/gdt.ppu differ diff --git a/lib/idt.ppu b/lib/idt.ppu index ff49d963..d6fe9503 100644 Binary files a/lib/idt.ppu and b/lib/idt.ppu differ diff --git a/lib/irq.ppu b/lib/irq.ppu index 46696e62..c6cca14d 100644 Binary files a/lib/irq.ppu and b/lib/irq.ppu differ diff --git a/lib/isr.ppu b/lib/isr.ppu index 86ddb510..4848de78 100644 Binary files a/lib/isr.ppu and b/lib/isr.ppu differ diff --git a/lib/isr0.ppu b/lib/isr0.ppu index c2519a80..e89e9ad6 100644 Binary files a/lib/isr0.ppu and b/lib/isr0.ppu differ diff --git a/lib/isr1.ppu b/lib/isr1.ppu index 366f4c2d..a23058fd 100644 Binary files a/lib/isr1.ppu and b/lib/isr1.ppu differ diff --git a/lib/isr10.ppu b/lib/isr10.ppu index 45f679b1..9b5a1b88 100644 Binary files a/lib/isr10.ppu and b/lib/isr10.ppu differ diff --git a/lib/isr11.ppu b/lib/isr11.ppu index 3e9d155a..ca654e91 100644 Binary files a/lib/isr11.ppu and b/lib/isr11.ppu differ diff --git a/lib/isr12.ppu b/lib/isr12.ppu index 8e4bb87d..ee81d54c 100644 Binary files a/lib/isr12.ppu and b/lib/isr12.ppu differ diff --git a/lib/isr13.ppu b/lib/isr13.ppu index e9c74909..b4369749 100644 Binary files a/lib/isr13.ppu and b/lib/isr13.ppu differ diff --git a/lib/isr14.ppu b/lib/isr14.ppu index 2ab54ca8..d7947cb4 100644 Binary files a/lib/isr14.ppu and b/lib/isr14.ppu differ diff --git a/lib/isr15.ppu b/lib/isr15.ppu index ca826396..ed43f454 100644 Binary files a/lib/isr15.ppu and b/lib/isr15.ppu differ diff --git a/lib/isr16.ppu b/lib/isr16.ppu index ee544e87..8e39a322 100644 Binary files a/lib/isr16.ppu and b/lib/isr16.ppu differ diff --git a/lib/isr17.ppu b/lib/isr17.ppu index 69dc6aa3..36e621c5 100644 Binary files a/lib/isr17.ppu and b/lib/isr17.ppu differ diff --git a/lib/isr18.ppu b/lib/isr18.ppu index 1390d8a0..4439aa49 100644 Binary files a/lib/isr18.ppu and b/lib/isr18.ppu differ diff --git a/lib/isr2.ppu b/lib/isr2.ppu index 9c74264e..3f3b5ac8 100644 Binary files a/lib/isr2.ppu and b/lib/isr2.ppu differ diff --git a/lib/isr3.ppu b/lib/isr3.ppu index eacddbe8..a244486d 100644 Binary files a/lib/isr3.ppu and b/lib/isr3.ppu differ diff --git a/lib/isr32.ppu b/lib/isr32.ppu index 70f34f32..42ea1f01 100644 Binary files a/lib/isr32.ppu and b/lib/isr32.ppu differ diff --git a/lib/isr33.ppu b/lib/isr33.ppu index 1e889451..71d3b4d9 100644 Binary files a/lib/isr33.ppu and b/lib/isr33.ppu differ diff --git a/lib/isr4.ppu b/lib/isr4.ppu index 5a0d35f6..07921b8b 100644 Binary files a/lib/isr4.ppu and b/lib/isr4.ppu differ diff --git a/lib/isr40.ppu b/lib/isr40.ppu index 74ddb174..c82b5acb 100644 Binary files a/lib/isr40.ppu and b/lib/isr40.ppu differ diff --git a/lib/isr5.ppu b/lib/isr5.ppu index 57e93f3a..3e0386cb 100644 Binary files a/lib/isr5.ppu and b/lib/isr5.ppu differ diff --git a/lib/isr6.ppu b/lib/isr6.ppu index 9bd30e19..a75d23f0 100644 Binary files a/lib/isr6.ppu and b/lib/isr6.ppu differ diff --git a/lib/isr7.ppu b/lib/isr7.ppu index 74bf645f..083e423f 100644 Binary files a/lib/isr7.ppu and b/lib/isr7.ppu differ diff --git a/lib/isr8.ppu b/lib/isr8.ppu index 04d1b7ba..2d948be8 100644 Binary files a/lib/isr8.ppu and b/lib/isr8.ppu differ diff --git a/lib/isr9.ppu b/lib/isr9.ppu index e6808715..5978b178 100644 Binary files a/lib/isr9.ppu and b/lib/isr9.ppu differ diff --git a/lib/isr_types.ppu b/lib/isr_types.ppu index d00461c4..938a2a1c 100644 Binary files a/lib/isr_types.ppu and b/lib/isr_types.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 202e8008..c14d3a6d 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index 8445b8b1..5eaacf0e 100644 Binary files a/lib/keyboard.ppu and b/lib/keyboard.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 2af4c4f9..e5ef38d8 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index d81ad739..b0894276 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 900f30fb..b686df07 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/memorymanager.ppu b/lib/memorymanager.ppu index cd36fb2d..f51fd2fb 100644 Binary files a/lib/memorymanager.ppu and b/lib/memorymanager.ppu differ diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index 641f26cc..c97dd0c2 100644 Binary files a/lib/multiboot.ppu and b/lib/multiboot.ppu differ diff --git a/lib/paging.ppu b/lib/paging.ppu new file mode 100644 index 00000000..97047017 Binary files /dev/null and b/lib/paging.ppu differ diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index 9c8e4896..d0d99e34 100644 Binary files a/lib/scheduler.ppu and b/lib/scheduler.ppu differ diff --git a/lib/stub.o b/lib/stub.o index 0ec3473e..831794ec 100644 Binary files a/lib/stub.o and b/lib/stub.o differ diff --git a/lib/system.o b/lib/system.o index 3870b08b..6db25fd7 100644 Binary files a/lib/system.o and b/lib/system.o differ diff --git a/lib/system.ppu b/lib/system.ppu index 3bae1258..4126106a 100644 Binary files a/lib/system.ppu and b/lib/system.ppu differ diff --git a/lib/util.ppu b/lib/util.ppu index 36244b36..4187a1c4 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/src/kernel.pas b/src/kernel.pas index 32ba8712..ffc46138 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -57,6 +57,14 @@ begin STI; isr32.hook(uint32(@bios_data_area.tick_update)); + {z:= 1; + while true do begin + console.writeintln(z); + pint:= kalloc(65000); + if pint = nil then while true do begin end else pint^:= 1234; + z:=z+1; + end;} + //drivers keyboard.init(keyboard_layout); diff --git a/src/paging.pas b/src/paging.pas index bc9cdbd8..a8e7294e 100644 --- a/src/paging.pas +++ b/src/paging.pas @@ -2,6 +2,32 @@ unit paging; interface +type + PPageTableEntry = ^TPageTableEntry; + + TPageTableEntry = bitpacked record + Present, Writable, UserMode, WriteThrough, + NotCacheable, Accessed, Dirty, AttrIndex, + GlobalPage: Boolean; + Avail: UBit3; + FrameAddr: UBit20; + end; + + PPageDirEntry = ^TPageDirEntry; + TPageDirEntry = bitpacked record + Present, Writable, UserMode, WriteThrough, + NotCacheable, Accessed, Reserved, PageSize, + GlobalPage: Boolean; + Avail: UBit3; + TableAddr: UBit20; + end; + + TPageDirectory = Array[1..1024] of TPageDirEntry; + PPageDirectory = ^TPageDirectory; + +Var + PageDirectory : TPageDirectory; external name '_PageDirectory'; + implementation end. \ No newline at end of file diff --git a/src/stub/stub.asm b/src/stub/stub.asm index 8b662ab5..0e8989ef 100644 --- a/src/stub/stub.asm +++ b/src/stub/stub.asm @@ -41,6 +41,8 @@ KERNEL_PAGE_NUMBER equ (KERNEL_VIRTUAL_BASE >> 22) section .data align 0x1000 +_PageDirectory equ BootPageDirectory +global _PageDirectory BootPageDirectory: dd 0x00000083 times (KERNEL_PAGE_NUMBER - 1) dd 0 diff --git a/src/system.pas b/src/system.pas index 8ae0d456..891596b0 100644 --- a/src/system.pas +++ b/src/system.pas @@ -13,6 +13,7 @@ interface const KERNEL_VIRTUAL_BASE = $C0000000; + KERNEL_PAGE_NUMBER = KERNEL_VIRTUAL_BASE SHR 22; type //internal types @@ -53,6 +54,10 @@ type Void = ^uInt32; + //Alternate Types + UBit3 = 0..(1 shl 3) - 1; + UBit20 = 0..(1 shl 20) - 1; + implementation end.