git-svn-id: https://spexeah.com:8443/svn/Asuro@414 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								bin/kernel.bin
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/kernel.bin
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/E1000.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/E1000.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/PCI.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/PCI.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/USB.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/USB.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/kernel.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/kernel.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/libpsystem.a
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/libpsystem.a
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/tss.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/tss.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -134,6 +134,7 @@ function sendPacket(p_data : void; p_len : uint16) : sint32; | |||||||
| implementation | implementation | ||||||
|  |  | ||||||
| var | var | ||||||
|  |     bus, slot, func : uint8; | ||||||
|     loaded : boolean; |     loaded : boolean; | ||||||
|     card_type : TCardType; |     card_type : TCardType; | ||||||
|     bar_type : uint8; |     bar_type : uint8; | ||||||
| @@ -265,12 +266,17 @@ begin | |||||||
|     ptr:= puint8(kalloc(sizeof(TE1000_rx_desc) * E1000_NUM_RX_DESC + 16)); |     ptr:= puint8(kalloc(sizeof(TE1000_rx_desc) * E1000_NUM_RX_DESC + 16)); | ||||||
|     descs:= PE1000_rx_desc(ptr); |     descs:= PE1000_rx_desc(ptr); | ||||||
|     for i:=0 to E1000_NUM_RX_DESC do begin |     for i:=0 to E1000_NUM_RX_DESC do begin | ||||||
|         rx_descs[i]:= PE1000_rx_desc(uint32(descs + i*16)); |         rx_descs[i]:= @descs[i];//PE1000_rx_desc(uint32(descs) + i*16); | ||||||
|         rx_descs[i]^.address:= uint64(kalloc(8192 + 16)); |         rx_descs[i]^.address:= uint64(kalloc(8192 + 16)); | ||||||
|         rx_descs[i]^.status:= 0; |         rx_descs[i]^.status:= 0; | ||||||
|     end; |     end; | ||||||
|  |  | ||||||
|     outptr:= puint8(uint32(ptr) - KERNEL_VIRTUAL_BASE); |     outptr:= puint8(vtop(uint32(ptr)));//puint8(uint32(ptr) - KERNEL_VIRTUAL_BASE); | ||||||
|  |  | ||||||
|  |     console.output('E1000 Driver', 'RX VMem: '); | ||||||
|  |     console.writehexln(uint32(ptr)); | ||||||
|  |     console.output('E1000 Driver', 'RX Mem: '); | ||||||
|  |     console.writehexln(uint32(outptr)); | ||||||
|  |  | ||||||
|     writeCommand(REG_TXDESCLO, uint32(uint64(outptr) SHR 32)); |     writeCommand(REG_TXDESCLO, uint32(uint64(outptr) SHR 32)); | ||||||
|     writeCommand(REG_TXDESCHI, uint32(uint64(outptr) AND $FFFFFFFF)); |     writeCommand(REG_TXDESCHI, uint32(uint64(outptr) AND $FFFFFFFF)); | ||||||
| @@ -298,16 +304,21 @@ begin | |||||||
|     ptr:= puint8(kalloc(sizeof(TE1000_tx_desc) * (E1000_NUM_TX_DESC + 16)));  |     ptr:= puint8(kalloc(sizeof(TE1000_tx_desc) * (E1000_NUM_TX_DESC + 16)));  | ||||||
|     descs:= PE1000_tx_desc(ptr); |     descs:= PE1000_tx_desc(ptr); | ||||||
|     for i:=0 to E1000_NUM_TX_DESC do begin |     for i:=0 to E1000_NUM_TX_DESC do begin | ||||||
|         tx_descs[i]:= PE1000_tx_desc(uint32(descs + i*16)); |         tx_descs[i]:= @descs[i];//PE1000_tx_desc(uint32(descs + i*16)); | ||||||
|         tx_descs[i]^.address:= 0; |         tx_descs[i]^.address:= 0; | ||||||
|         tx_descs[i]^.cmd:= 0; |         tx_descs[i]^.cmd:= 0; | ||||||
|         tx_descs[i]^.status:= TSTA_DD; |         tx_descs[i]^.status:= TSTA_DD; | ||||||
|     end; |     end; | ||||||
|      |      | ||||||
|     outptr:= puint8(uint32(ptr) - KERNEL_VIRTUAL_BASE); |     outptr:= puint8(vtop(uint32(ptr))); //puint8(uint32(ptr) - KERNEL_VIRTUAL_BASE); | ||||||
|  |  | ||||||
|     writeCommand(REG_TXDESCHI, uint32(uint64(outptr) SHR 32)); |     console.output('E1000 Driver', 'TX VMem: '); | ||||||
|     writeCommand(REG_TXDESCLO, uint32(uint64(outptr) AND $FFFFFFFF)); |     console.writehexln(uint32(ptr)); | ||||||
|  |     console.output('E1000 Driver', 'TX Mem: '); | ||||||
|  |     console.writehexln(uint32(outptr)); | ||||||
|  |  | ||||||
|  |     writeCommand(REG_TXDESCHI, 0); | ||||||
|  |     writeCommand(REG_TXDESCLO, uint32(outptr)); | ||||||
|  |  | ||||||
|     writeCommand(REG_TXDESCLEN, E1000_NUM_TX_DESC * 16); |     writeCommand(REG_TXDESCLEN, E1000_NUM_TX_DESC * 16); | ||||||
|  |  | ||||||
| @@ -379,12 +390,22 @@ end; | |||||||
| procedure fire(); interrupt; | procedure fire(); interrupt; | ||||||
| var | var | ||||||
|     status : uint32; |     status : uint32; | ||||||
|  |     data     : uint32; | ||||||
|  |  | ||||||
| begin | begin | ||||||
|  |     console.outputln('E1000 Driver', 'Interrupt begin.'); | ||||||
|  |      | ||||||
|     CLI; |     CLI; | ||||||
|  |      | ||||||
|  |     requestConfig(bus, slot, func, 1); | ||||||
|  |     data := inl($CFC); | ||||||
|  |     data := data AND $FFF7FFFF; | ||||||
|  |     writeConfig(bus, slot, func, 1, data); | ||||||
|     status:= readCommand($0C); |     status:= readCommand($0C); | ||||||
|     //console.outputln('E1000 Driver', 'Interrupt Fired.'); |      | ||||||
|     //console.output('E1000 Driver', 'Int Status: '); |     console.output('E1000 Driver', 'Int Status: '); | ||||||
|     //console.writehexln(status); |     console.writehexln(status); | ||||||
|  |      | ||||||
|     if (status AND $04) > 0 then begin |     if (status AND $04) > 0 then begin | ||||||
|         startLink(); |         startLink(); | ||||||
|     end else if (Status AND $10) > 0 then begin |     end else if (Status AND $10) > 0 then begin | ||||||
| @@ -392,8 +413,11 @@ begin | |||||||
|     end else if (Status AND $80) > 0 then begin |     end else if (Status AND $80) > 0 then begin | ||||||
|         handleReceive(); |         handleReceive(); | ||||||
|     end; |     end; | ||||||
|     outb($20, $20); |      | ||||||
|     outb($A0, $20); |     outb($A0, $20); | ||||||
|  |     outb($20, $20); | ||||||
|  |      | ||||||
|  |     console.outputln('E1000 Driver', 'Interrupt End.'); | ||||||
| end; | end; | ||||||
|  |  | ||||||
| procedure console_command_mac(params : PParamList); | procedure console_command_mac(params : PParamList); | ||||||
| @@ -455,6 +479,9 @@ begin | |||||||
|     kpalloc(io_base); |     kpalloc(io_base); | ||||||
|     kpalloc(mem_base); |     kpalloc(mem_base); | ||||||
|      |      | ||||||
|  |     bus:= PCI_Info^.bus; | ||||||
|  |     slot:= PCI_Info^.slot; | ||||||
|  |     func:= PCI_Info^.func; | ||||||
|     setBusMaster(PCI_Info^.bus, PCI_Info^.slot, PCI_Info^.func, true); |     setBusMaster(PCI_Info^.bus, PCI_Info^.slot, PCI_Info^.func, true); | ||||||
|     eeprom_exists:= false; |     eeprom_exists:= false; | ||||||
|      |      | ||||||
| @@ -475,7 +502,8 @@ begin | |||||||
|     end;  |     end;  | ||||||
|  |  | ||||||
|     IDT.set_gate(32 + PCI_Info^.interrupt_line, uint32(@fire), $08, ISR_RING_0); |     IDT.set_gate(32 + PCI_Info^.interrupt_line, uint32(@fire), $08, ISR_RING_0); | ||||||
|     enableInturrupt(); |  | ||||||
|  |     //enableInturrupt(); | ||||||
|     rxinit(); |     rxinit(); | ||||||
|     txinit(); |     txinit(); | ||||||
|  |  | ||||||
| @@ -544,7 +572,7 @@ var | |||||||
|     old_cur : uint8; |     old_cur : uint8; | ||||||
|  |  | ||||||
| begin | begin | ||||||
|     tx_descs[tx_curr]^.address:= uint32(uint32(p_data) - KERNEL_VIRTUAL_BASE); |     tx_descs[tx_curr]^.address:= uint32(vtop(uint32(p_data))); | ||||||
|     tx_descs[tx_curr]^.length:= p_len; |     tx_descs[tx_curr]^.length:= p_len; | ||||||
|     tx_descs[tx_curr]^.cmd:= CMD_EOP OR CMD_IFCS OR CMD_RS OR CMD_RPS; |     tx_descs[tx_curr]^.cmd:= CMD_EOP OR CMD_IFCS OR CMD_RS OR CMD_RPS; | ||||||
|     tx_descs[tx_curr]^.status:= 0; |     tx_descs[tx_curr]^.status:= 0; | ||||||
|   | |||||||
| @@ -36,8 +36,7 @@ uses | |||||||
|      testdriver, |      testdriver, | ||||||
|      E1000, |      E1000, | ||||||
|      AHCI_OLD, |      AHCI_OLD, | ||||||
|      IDE, |      IDE; | ||||||
|      storagemanagement; |  | ||||||
|   |   | ||||||
| procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; | procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; | ||||||
|   |   | ||||||
| @@ -95,7 +94,6 @@ begin | |||||||
|      terminal.registerCommand('BSOD', @terminal_command_bsod, 'Force a Panic Screen.'); |      terminal.registerCommand('BSOD', @terminal_command_bsod, 'Force a Panic Screen.'); | ||||||
|  |  | ||||||
|      drivermanagement.init(); |      drivermanagement.init(); | ||||||
|      storagemanagement.init(); |  | ||||||
|  |  | ||||||
|      console.init(); |      console.init(); | ||||||
|  |  | ||||||
| @@ -142,7 +140,7 @@ begin | |||||||
|      testdriver.init(); |      testdriver.init(); | ||||||
|      E1000.init(); |      E1000.init(); | ||||||
|      //AHCI_OLD.init(); |      //AHCI_OLD.init(); | ||||||
|      IDE.init(); |      //IDE.init(); | ||||||
|      //Nothing beyond here |      //Nothing beyond here | ||||||
|      USB.init(); |      USB.init(); | ||||||
|      pci.init(); |      pci.init(); | ||||||
|   | |||||||
| @@ -48,6 +48,7 @@ procedure free_page(page_number : uint16); | |||||||
| procedure free_page_at_address(address : uint32); | procedure free_page_at_address(address : uint32); | ||||||
| function new_page_directory : uint32; | function new_page_directory : uint32; | ||||||
| function new_kernel_mapped_page_directory : uint32; | function new_kernel_mapped_page_directory : uint32; | ||||||
|  | function vtop(address : uint32) : uint32; | ||||||
|  |  | ||||||
| implementation | implementation | ||||||
|  |  | ||||||
| @@ -153,6 +154,19 @@ begin | |||||||
|     end; |     end; | ||||||
| end; | end; | ||||||
|  |  | ||||||
|  | function vtop(address : uint32) : uint32; | ||||||
|  | var | ||||||
|  |     idx : uint32; | ||||||
|  |     paddress : uint32; | ||||||
|  |     loadd    : uint32; | ||||||
|  |  | ||||||
|  | begin | ||||||
|  |     idx:= address SHR 22; | ||||||
|  |     paddress:= uint32(KERNEL_PAGE_DIRECTORY^[idx].address) SHL 12; | ||||||
|  |     loadd:= address AND $FFFFFF; | ||||||
|  |     vtop:= paddress + loadd; | ||||||
|  | end; | ||||||
|  |  | ||||||
| function new_page(page_number : uint16) : boolean; | function new_page(page_number : uint16) : boolean; | ||||||
| var | var | ||||||
|     block : uint16; |     block : uint16; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 kieron
					kieron