From 6f576e13f0080ebee03857cbeb98ca46837d30b4 Mon Sep 17 00:00:00 2001 From: kudzu_cp <6d05c8c8ef5431987001abfdb2eadc9593ac9498> Date: Sun, 22 Jun 2008 01:44:41 +0000 Subject: [PATCH] --- .../Cosmos.Hardware/Cosmos.Hardware.csproj | 17 +++---- .../Cosmos.Hardware/{Old => }/DebugUtil.cs | 45 ++++++++++++++++- source/Cosmos/Cosmos.Hardware/Global.cs | 4 +- .../Cosmos.Hardware/{Old => }/Hardware.cs | 0 .../Cosmos.Hardware/{PC => }/Interrupts.cs | 19 +++---- .../Network/Devices/RTL8139/RTL8139.cs | 2 +- source/Cosmos/Cosmos.Hardware/PC/DebugUtil.cs | 50 ------------------- .../Cosmos.Hardware/PC/{Bus => }/PCIBus.cs | 0 .../Cosmos.Hardware/{PC/Bus => }/PIC.cs | 2 +- .../Cosmos/Cosmos.Hardware/{Old => }/PIT.cs | 0 .../Cosmos/Cosmos.Hardware/{Old => }/RTC.cs | 0 .../Cosmos.Hardware/{Old => }/Serial.cs | 0 .../Assemblers/CreateIDT.cs | 8 +-- 13 files changed, 70 insertions(+), 77 deletions(-) rename source/Cosmos/Cosmos.Hardware/{Old => }/DebugUtil.cs (69%) rename source/Cosmos/Cosmos.Hardware/{Old => }/Hardware.cs (100%) rename source/Cosmos/Cosmos.Hardware/{PC => }/Interrupts.cs (94%) delete mode 100644 source/Cosmos/Cosmos.Hardware/PC/DebugUtil.cs rename source/Cosmos/Cosmos.Hardware/PC/{Bus => }/PCIBus.cs (100%) rename source/Cosmos/Cosmos.Hardware/{PC/Bus => }/PIC.cs (94%) rename source/Cosmos/Cosmos.Hardware/{Old => }/PIT.cs (100%) rename source/Cosmos/Cosmos.Hardware/{Old => }/RTC.cs (100%) rename source/Cosmos/Cosmos.Hardware/{Old => }/Serial.cs (100%) diff --git a/source/Cosmos/Cosmos.Hardware/Cosmos.Hardware.csproj b/source/Cosmos/Cosmos.Hardware/Cosmos.Hardware.csproj index efad8c3d2..b0cf17a99 100644 --- a/source/Cosmos/Cosmos.Hardware/Cosmos.Hardware.csproj +++ b/source/Cosmos/Cosmos.Hardware/Cosmos.Hardware.csproj @@ -80,19 +80,18 @@ - - - - + + + - - - + + + - - + + diff --git a/source/Cosmos/Cosmos.Hardware/Old/DebugUtil.cs b/source/Cosmos/Cosmos.Hardware/DebugUtil.cs similarity index 69% rename from source/Cosmos/Cosmos.Hardware/Old/DebugUtil.cs rename to source/Cosmos/Cosmos.Hardware/DebugUtil.cs index db2123536..76bb11d51 100644 --- a/source/Cosmos/Cosmos.Hardware/Old/DebugUtil.cs +++ b/source/Cosmos/Cosmos.Hardware/DebugUtil.cs @@ -4,7 +4,50 @@ using System.Text; namespace Cosmos.Hardware { public static class DebugUtil { - public static void Initialize() { + public static unsafe void LogInterruptOccurred(Interrupts.InterruptContext* aContext) { + uint aInterrupt = aContext->Interrupt; + Cosmos.Hardware.DebugUtil.StartLogging(); + Cosmos.Hardware.DebugUtil.WriteSerialString("Interrupt, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" SS=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->SS, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" GS=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->GS, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" FS=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->FS, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" ES=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ES, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" DS=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->DS, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" CS=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->CS, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" ESI=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ESI, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" EDI=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EDI, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" EBP=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EBP, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" ESP=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ESP, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" EBX=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EBX, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" EDX=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EDX, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" ECX=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ECX, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" EAX=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EAX, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" Param=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->Param, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" EFlags=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EFlags, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\" UserESP=\""); + Cosmos.Hardware.DebugUtil.WriteNumber(aContext->UserESP, 32); + Cosmos.Hardware.DebugUtil.WriteSerialString("\"/>\r\n"); + Cosmos.Hardware.DebugUtil.EndLogging(); + } + + public static void Initialize() { } public static void StartLogging() { diff --git a/source/Cosmos/Cosmos.Hardware/Global.cs b/source/Cosmos/Cosmos.Hardware/Global.cs index 99c10ea8b..22de61f95 100644 --- a/source/Cosmos/Cosmos.Hardware/Global.cs +++ b/source/Cosmos/Cosmos.Hardware/Global.cs @@ -9,13 +9,13 @@ namespace Cosmos.Hardware { public static void Init() { Kernel.CPU.CreateGDT(); - PC.Bus.CPU.PIC.Init(); + PIC.Init(); Serial.InitSerial(0); PIT.Initialize(Tick); //HW.Interrupts.IRQ01 += new Interrupts.InterruptDelegate(Cosmos.Hardware.Keyboard.HandleKeyboardInterrupt); - PC.Interrupts.Init(); + Interrupts.Init(); Kernel.CPU.CreateIDT(); PC.Bus.PCIBus.Init(); diff --git a/source/Cosmos/Cosmos.Hardware/Old/Hardware.cs b/source/Cosmos/Cosmos.Hardware/Hardware.cs similarity index 100% rename from source/Cosmos/Cosmos.Hardware/Old/Hardware.cs rename to source/Cosmos/Cosmos.Hardware/Hardware.cs diff --git a/source/Cosmos/Cosmos.Hardware/PC/Interrupts.cs b/source/Cosmos/Cosmos.Hardware/Interrupts.cs similarity index 94% rename from source/Cosmos/Cosmos.Hardware/PC/Interrupts.cs rename to source/Cosmos/Cosmos.Hardware/Interrupts.cs index 83ba7fe79..c678ac6de 100644 --- a/source/Cosmos/Cosmos.Hardware/PC/Interrupts.cs +++ b/source/Cosmos/Cosmos.Hardware/Interrupts.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Runtime.InteropServices; -namespace Cosmos.Hardware.PC { +namespace Cosmos.Hardware { public class Interrupts { [StructLayout(LayoutKind.Explicit, Size=76)] public struct InterruptContext { @@ -55,9 +55,9 @@ namespace Cosmos.Hardware.PC { DebugUtil.LogInterruptOccurred(aContext); if (aContext->Interrupt >= 0x20 && aContext->Interrupt <= 0x2F) { if (aContext->Interrupt >= 0x28) { - Bus.CPU.PIC.SignalSecondary(); + PIC.SignalSecondary(); } else { - Bus.CPU.PIC.SignalPrimary(); + PIC.SignalPrimary(); } } } @@ -81,7 +81,7 @@ namespace Cosmos.Hardware.PC { //IRQ 0 - System timer. Reserved for the system. Cannot be changed by a user. public static unsafe void HandleInterrupt_20(InterruptContext* aContext) { PIT.HandleInterrupt(); - Bus.CPU.PIC.SignalPrimary(); + PIC.SignalPrimary(); } static public InterruptDelegate IRQ01; @@ -100,7 +100,7 @@ namespace Cosmos.Hardware.PC { // // - End change area - Bus.CPU.PIC.SignalPrimary(); + PIC.SignalPrimary(); } //IRQ 11 - (Added for RTL8139 network card) @@ -112,10 +112,11 @@ namespace Cosmos.Hardware.PC { //Cosmos.Hardware.DebugUtil.SendMessage("Interrupts", "Interrupt 2B handler (for RTL)"); //Console.WriteLine("IRQ 11 raised!"); - if (IRQ11 != null) + if (IRQ11 != null) { IRQ11(); + } - Bus.CPU.PIC.SignalSecondary(); + PIC.SignalSecondary(); } //IRQ 14 - Primary IDE. If no Primary IDE this can be changed @@ -123,7 +124,7 @@ namespace Cosmos.Hardware.PC { Cosmos.Hardware.DebugUtil.SendMessage("IRQ", "Primary IDE"); //Storage.ATAOld.HandleInterruptPrimary(); Storage.ATA2.ATA.HandleInterruptPrimary(); - Bus.CPU.PIC.SignalSecondary(); + PIC.SignalSecondary(); } public static unsafe void HandleInterrupt_35(InterruptContext* aContext) { @@ -139,7 +140,7 @@ namespace Cosmos.Hardware.PC { public static unsafe void HandleInterrupt_2F(InterruptContext* aContext) { Storage.ATA2.ATA.HandleInterruptSecondary(); Cosmos.Hardware.DebugUtil.SendMessage("IRQ", "Secondary IDE"); - Bus.CPU.PIC.SignalSecondary(); + PIC.SignalSecondary(); } public static unsafe void HandleInterrupt_00(InterruptContext* aContext) { diff --git a/source/Cosmos/Cosmos.Hardware/Network/Devices/RTL8139/RTL8139.cs b/source/Cosmos/Cosmos.Hardware/Network/Devices/RTL8139/RTL8139.cs index ea1d36788..e6125ff70 100644 --- a/source/Cosmos/Cosmos.Hardware/Network/Devices/RTL8139/RTL8139.cs +++ b/source/Cosmos/Cosmos.Hardware/Network/Devices/RTL8139/RTL8139.cs @@ -88,7 +88,7 @@ namespace Cosmos.Hardware.Network.Devices.RTL8139 //Enable IRQ Interrupt InitIRQMaskRegister(); - Cosmos.Hardware.PC.Interrupts.IRQ11 = new Cosmos.Hardware.PC.Interrupts.InterruptDelegate(this.HandleNetworkInterrupt); + Cosmos.Hardware.Interrupts.IRQ11 = new Cosmos.Hardware.Interrupts.InterruptDelegate(this.HandleNetworkInterrupt); //Console.WriteLine("Listening for IRQ" + pciCard.InterruptLine + "."); } diff --git a/source/Cosmos/Cosmos.Hardware/PC/DebugUtil.cs b/source/Cosmos/Cosmos.Hardware/PC/DebugUtil.cs deleted file mode 100644 index ac21bd30c..000000000 --- a/source/Cosmos/Cosmos.Hardware/PC/DebugUtil.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Cosmos.Hardware.PC { - public static class DebugUtil { - public static unsafe void LogInterruptOccurred(Interrupts.InterruptContext* aContext) { - uint aInterrupt = aContext->Interrupt; - Cosmos.Hardware.DebugUtil.StartLogging(); - Cosmos.Hardware.DebugUtil.WriteSerialString("Interrupt, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" SS=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->SS, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" GS=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->GS, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" FS=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->FS, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" ES=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ES, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" DS=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->DS, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" CS=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->CS, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" ESI=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ESI, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" EDI=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EDI, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" EBP=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EBP, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" ESP=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ESP, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" EBX=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EBX, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" EDX=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EDX, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" ECX=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->ECX, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" EAX=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EAX, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" Param=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->Param, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" EFlags=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->EFlags, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\" UserESP=\""); - Cosmos.Hardware.DebugUtil.WriteNumber(aContext->UserESP, 32); - Cosmos.Hardware.DebugUtil.WriteSerialString("\"/>\r\n"); - Cosmos.Hardware.DebugUtil.EndLogging(); - } - } -} diff --git a/source/Cosmos/Cosmos.Hardware/PC/Bus/PCIBus.cs b/source/Cosmos/Cosmos.Hardware/PC/PCIBus.cs similarity index 100% rename from source/Cosmos/Cosmos.Hardware/PC/Bus/PCIBus.cs rename to source/Cosmos/Cosmos.Hardware/PC/PCIBus.cs diff --git a/source/Cosmos/Cosmos.Hardware/PC/Bus/PIC.cs b/source/Cosmos/Cosmos.Hardware/PIC.cs similarity index 94% rename from source/Cosmos/Cosmos.Hardware/PC/Bus/PIC.cs rename to source/Cosmos/Cosmos.Hardware/PIC.cs index 87fa46f68..6d389fe7f 100644 --- a/source/Cosmos/Cosmos.Hardware/PC/Bus/PIC.cs +++ b/source/Cosmos/Cosmos.Hardware/PIC.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace Cosmos.Hardware.PC.Bus.CPU { +namespace Cosmos.Hardware { //TODO: Change this to be an instance like other drivers public abstract class PIC : Cosmos.Hardware.Device { /// diff --git a/source/Cosmos/Cosmos.Hardware/Old/PIT.cs b/source/Cosmos/Cosmos.Hardware/PIT.cs similarity index 100% rename from source/Cosmos/Cosmos.Hardware/Old/PIT.cs rename to source/Cosmos/Cosmos.Hardware/PIT.cs diff --git a/source/Cosmos/Cosmos.Hardware/Old/RTC.cs b/source/Cosmos/Cosmos.Hardware/RTC.cs similarity index 100% rename from source/Cosmos/Cosmos.Hardware/Old/RTC.cs rename to source/Cosmos/Cosmos.Hardware/RTC.cs diff --git a/source/Cosmos/Cosmos.Hardware/Old/Serial.cs b/source/Cosmos/Cosmos.Hardware/Serial.cs similarity index 100% rename from source/Cosmos/Cosmos.Hardware/Old/Serial.cs rename to source/Cosmos/Cosmos.Hardware/Serial.cs diff --git a/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/CreateIDT.cs b/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/CreateIDT.cs index 2adc92d10..d8205e0e9 100644 --- a/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/CreateIDT.cs +++ b/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/CreateIDT.cs @@ -29,8 +29,8 @@ namespace Cosmos.Kernel.Plugs.Assemblers { } private static MethodBase GetInterruptHandler(byte aInterrupt) { - return GetMethodDef(typeof(Cosmos.Hardware.PC.Interrupts).Assembly, - typeof(Cosmos.Hardware.PC.Interrupts).FullName, + return GetMethodDef(typeof(Cosmos.Hardware.Interrupts).Assembly, + typeof(Cosmos.Hardware.Interrupts).FullName, "HandleInterrupt_" + aInterrupt.ToString("X2"), false); } @@ -147,8 +147,8 @@ namespace Cosmos.Kernel.Plugs.Assemblers { new Label("__ISR_Handler_" + j.ToString("X2") + "_SetCS"); MethodBase xHandler = GetInterruptHandler((byte) j); if (xHandler == null) { - xHandler = GetMethodDef(typeof(Cosmos.Hardware.PC.Interrupts).Assembly, - typeof(Cosmos.Hardware.PC.Interrupts).FullName, + xHandler = GetMethodDef(typeof(Cosmos.Hardware.Interrupts).Assembly, + typeof(Cosmos.Hardware.Interrupts).FullName, "HandleInterrupt_Default", true); }