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);
}