diff --git a/Asuro.iso b/Asuro.iso index 8dc22f97..2f6db90e 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index f924dbb8..286cf8a8 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 f924dbb8..286cf8a8 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/E1000.ppu b/lib/E1000.ppu index 65b7215e..512e03f4 100644 Binary files a/lib/E1000.ppu and b/lib/E1000.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index aaa90797..82cca8af 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 3a2e3331..10a5c83e 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 1d76ecf0..005c2d92 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 7ddd0c04..018e35f0 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/src/driver/netdev/E1000.pas b/src/driver/netdev/E1000.pas index 64c01e7e..9306b020 100644 --- a/src/driver/netdev/E1000.pas +++ b/src/driver/netdev/E1000.pas @@ -16,7 +16,8 @@ uses terminal, net, nettypes, - netutils; + netutils, + isrmanager; const INTEL_VEND = $8086; @@ -403,12 +404,13 @@ begin end; end; -procedure fire(); interrupt; +procedure fire(); var status : uint32; data : uint32; begin + console.writestringln('E1000'); push_trace('E1000.fire'); //console.outputln('E1000 Driver', 'FIRED.'); @@ -429,11 +431,7 @@ begin writeCommand(REG_IMASK, 1); //Clear INT on PIC and Cascade - outb($A0, $20); - outb($20, $20); - //CLI (Not 100% Nessisary as this is done on IRET) - CLI; pop_trace; end; @@ -525,7 +523,8 @@ begin net.registerNetworkCard(@sendPacket, getMACAddress()); - IDT.set_gate(32 + PCI_Info^.interrupt_line, uint32(@fire), $08, ISR_RING_0); + isrmanager.registerISR(32 + PCI_Info^.interrupt_line, @fire); + //IDT.set_gate(32 + PCI_Info^.interrupt_line, uint32(@fire), $08, ISR_RING_0); enableInturrupt(); rxinit();