This commit is contained in:
kudzu_cp 2011-07-21 19:17:24 +00:00
parent ea1d8f9db1
commit ea2a4196ce
5 changed files with 30 additions and 32 deletions

View file

@ -88,6 +88,7 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Docs", "..\Docs", "{67E7DEF
Release.AspNetCompiler.ForceOverwrite = "true" Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false" Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False" Release.AspNetCompiler.Debug = "False"
VWDPort = "4516"
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Compiler.Debug", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Compiler.Debug.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Compiler.Debug", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Compiler.Debug.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}"
@ -1172,9 +1173,9 @@ Global
{C5519AC3-218A-4211-9D40-B23AA80FB35E} = {D95021E1-A2C9-4829-819E-ED433AF13162} {C5519AC3-218A-4211-9D40-B23AA80FB35E} = {D95021E1-A2C9-4829-819E-ED433AF13162}
{AB24E403-54F3-4F67-B5E0-119A7227AAC1} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758} {AB24E403-54F3-4F67-B5E0-119A7227AAC1} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
{6D2688FE-6FD8-44A8-B96A-6037457F72A7} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758} {6D2688FE-6FD8-44A8-B96A-6037457F72A7} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
{35CABD9D-5C85-419A-B6C9-561EAD97A553} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
{4266FA56-F6FE-4E9B-BAE3-B6910183884C} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758} {4266FA56-F6FE-4E9B-BAE3-B6910183884C} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
{3370FC04-B669-46A4-A4AA-A89540318F8D} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758} {3370FC04-B669-46A4-A4AA-A89540318F8D} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
{35CABD9D-5C85-419A-B6C9-561EAD97A553} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
{C4941654-3D7A-484B-9F5C-3D331AB8F585} = {1698DD83-72A3-44CD-B088-4320A4014A95} {C4941654-3D7A-484B-9F5C-3D331AB8F585} = {1698DD83-72A3-44CD-B088-4320A4014A95}
{9D82B35C-7133-4ADE-AA5C-0FFB2BFA8BA6} = {A4478219-065D-4928-BB4D-4358CAD39A03} {9D82B35C-7133-4ADE-AA5C-0FFB2BFA8BA6} = {A4478219-065D-4928-BB4D-4358CAD39A03}
{2DF5F17F-4890-4856-ADFD-4DE23282C3B7} = {A4478219-065D-4928-BB4D-4358CAD39A03} {2DF5F17F-4890-4856-ADFD-4DE23282C3B7} = {A4478219-065D-4928-BB4D-4358CAD39A03}
@ -1190,8 +1191,8 @@ Global
{63F7BFB9-419E-4965-B580-304B9C9FA7D8} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6} {63F7BFB9-419E-4965-B580-304B9C9FA7D8} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
{52BF0A64-EBEF-420A-9F27-6C5226A4B77B} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6} {52BF0A64-EBEF-420A-9F27-6C5226A4B77B} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
{C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6} {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
{239E33A7-F0C3-4801-85CA-4D8F89A31DC0} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
{576C3D3B-A3EA-44FA-8E39-AFD3E6F3FE23} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6} {576C3D3B-A3EA-44FA-8E39-AFD3E6F3FE23} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
{239E33A7-F0C3-4801-85CA-4D8F89A31DC0} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
{6658FCE0-7032-4B7B-BD95-F2765C393442} = {2DF5F17F-4890-4856-ADFD-4DE23282C3B7} {6658FCE0-7032-4B7B-BD95-F2765C393442} = {2DF5F17F-4890-4856-ADFD-4DE23282C3B7}
{6882C74B-3ED2-4D76-9E7B-67B6A28808BC} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E} {6882C74B-3ED2-4D76-9E7B-67B6A28808BC} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
{23476FAD-3712-4A4B-90C0-CCCC9AC8D953} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E} {23476FAD-3712-4A4B-90C0-CCCC9AC8D953} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}

View file

@ -106,6 +106,8 @@ namespace Cosmos.Compiler.DebugStub {
static protected DataMember32 DebugTraceMode; static protected DataMember32 DebugTraceMode;
// enum Status // enum Status
static protected DataMember32 DebugStatus; static protected DataMember32 DebugStatus;
// Nesting control for non steppable routines
static protected DataMember32 DebugSuspendLevel;
public DebugStub(int aComNo) { public DebugStub(int aComNo) {
mComNo = aComNo; mComNo = aComNo;
@ -114,8 +116,6 @@ namespace Cosmos.Compiler.DebugStub {
// Old method, need to convert to fields // Old method, need to convert to fields
mAsm.DataMembers.AddRange(new DataMember[]{ mAsm.DataMembers.AddRange(new DataMember[]{
// Nesting control for non steppable routines
new DataMember("DebugSuspendLevel", 0),
// Nesting control for non steppable routines // Nesting control for non steppable routines
new DataMember("DebugResumeLevel", 0), new DataMember("DebugResumeLevel", 0),
// Ptr to the push all data. It points to the "bottom" after a PushAll op. // Ptr to the push all data. It points to the "bottom" after a PushAll op.
@ -908,7 +908,7 @@ namespace Cosmos.Compiler.DebugStub {
// IRQ's are disabled between Compare and JumpIf so an IRQ cant // IRQ's are disabled between Compare and JumpIf so an IRQ cant
// happen in between them which could also cause double entry. // happen in between them which could also cause double entry.
DisableInterrupts(); DisableInterrupts();
Memory["DebugSuspendLevel", 32].Compare(0); DebugSuspendLevel.Value.Compare(0);
JumpIf(Flags.Equal, "DebugStub_Running"); JumpIf(Flags.Equal, "DebugStub_Running");
// DebugStub is already running, so exit. // DebugStub is already running, so exit.
// But we need to see if IRQs are disabled. // But we need to see if IRQs are disabled.
@ -981,18 +981,15 @@ namespace Cosmos.Compiler.DebugStub {
} }
} }
}
public class DebugPoint : CodeGroup {
public class DebugSuspend : CodeBlock { public class DebugSuspend : CodeBlock {
public override void Assemble() { public override void Assemble() {
Memory["DebugSuspendLevel", 32]++; DebugSuspendLevel.Value++;
} }
} }
public class DebugResume : CodeBlock { public class DebugResume : CodeBlock {
public override void Assemble() { public override void Assemble() {
Memory["DebugSuspendLevel", 32]--; DebugSuspendLevel.Value--;
} }
} }
} }

View file

@ -19,9 +19,18 @@ namespace Cosmos.Compiler.XSharp {
return new MemoryAction(ElementReference.New(Name)) { IsIndirect = true, Size = 32 }; return new MemoryAction(ElementReference.New(Name)) { IsIndirect = true, Size = 32 };
} }
set { set {
// For DataMember32 value will be null with ++ and --, this is important and purposeful.
// ++ and -- try to set again, but for us we dont want that.
if (value != null) {
new Move { new Move {
DestinationRef = ElementReference.New(Name), DestinationIsIndirect = true DestinationRef = ElementReference.New(Name),
, SourceValue = value.Value.GetValueOrDefault(), SourceRef = value.Reference, SourceReg = value.Register, SourceIsIndirect = value.IsIndirect }; DestinationIsIndirect = true,
SourceValue = value.Value.GetValueOrDefault(),
SourceRef = value.Reference,
SourceReg = value.Register,
SourceIsIndirect = value.IsIndirect
};
}
} }
} }
} }

View file

@ -33,11 +33,13 @@ namespace Cosmos.Compiler.XSharp {
public static MemoryAction operator ++(MemoryAction aTarget) { public static MemoryAction operator ++(MemoryAction aTarget) {
aTarget.ApplyToDest(new INC()); aTarget.ApplyToDest(new INC());
// Must return null, see DataMember.this[] comment
return null; return null;
} }
public static MemoryAction operator --(MemoryAction aTarget) { public static MemoryAction operator --(MemoryAction aTarget) {
aTarget.ApplyToDest(new Dec()); aTarget.ApplyToDest(new Dec());
// Must return null, see DataMember.this[] comment
return null; return null;
} }

View file

@ -258,9 +258,6 @@ namespace Cosmos.IL2CPU.X86 {
if (mComNumber > 0) { if (mComNumber > 0) {
var xStub = new DebugStub(mComNumber); var xStub = new DebugStub(mComNumber);
xStub.Assemble(); xStub.Assemble();
var xStub2 = new DebugPoint();
xStub2.Assemble();
} else { } else {
new Label("DebugStub_Step"); new Label("DebugStub_Step");
new Return(); new Return();
@ -271,12 +268,9 @@ namespace Cosmos.IL2CPU.X86 {
#if !LFB_1024_8 #if !LFB_1024_8
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION")); DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
uint xFlags = 0x10003; uint xFlags = 0x10003;
DataMembers.Add(new DataMember("MultibootSignature", DataMembers.Add(new DataMember("MultibootSignature", new uint[] { 0x1BADB002 }));
new uint[] { 0x1BADB002 })); DataMembers.Add(new DataMember("MultibootFlags", xFlags));
DataMembers.Add(new DataMember("MultibootFlags", DataMembers.Add(new DataMember("MultibootChecksum", (int)(0 - (xFlags + 0x1BADB002))));
xFlags));
DataMembers.Add(new DataMember("MultibootChecksum",
(int)(0 - (xFlags + 0x1BADB002))));
DataMembers.Add(new DataMember("MultibootHeaderAddr", ElementReference.New("MultibootSignature"))); DataMembers.Add(new DataMember("MultibootHeaderAddr", ElementReference.New("MultibootSignature")));
DataMembers.Add(new DataMember("MultibootLoadAddr", ElementReference.New("MultibootSignature"))); DataMembers.Add(new DataMember("MultibootLoadAddr", ElementReference.New("MultibootSignature")));
DataMembers.Add(new DataMember("MultibootLoadEndAddr", ElementReference.New("_end_code"))); DataMembers.Add(new DataMember("MultibootLoadEndAddr", ElementReference.New("_end_code")));
@ -285,12 +279,9 @@ namespace Cosmos.IL2CPU.X86 {
DataMembers.Add(new DataEndIfDefined()); DataMembers.Add(new DataEndIfDefined());
DataMembers.Add(new DataIfDefined("ELF_COMPILATION")); DataMembers.Add(new DataIfDefined("ELF_COMPILATION"));
xFlags = 0x00003; xFlags = 0x00003;
DataMembers.Add(new DataMember("MultibootSignature", DataMembers.Add(new DataMember("MultibootSignature", new uint[] { 0x1BADB002 }));
new uint[] { 0x1BADB002 })); DataMembers.Add(new DataMember("MultibootFlags", xFlags));
DataMembers.Add(new DataMember("MultibootFlags", DataMembers.Add(new DataMember("MultibootChecksum", (int)(0 - (xFlags + 0x1BADB002))));
xFlags));
DataMembers.Add(new DataMember("MultibootChecksum",
(int)(0 - (xFlags + 0x1BADB002))));
DataMembers.Add(new DataEndIfDefined()); DataMembers.Add(new DataEndIfDefined());
#else #else
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION")); DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
@ -330,10 +321,8 @@ namespace Cosmos.IL2CPU.X86 {
// memory // memory
DataMembers.Add(new DataMember("MultiBootInfo_Memory_High", 0)); DataMembers.Add(new DataMember("MultiBootInfo_Memory_High", 0));
DataMembers.Add(new DataMember("MultiBootInfo_Memory_Low", 0)); DataMembers.Add(new DataMember("MultiBootInfo_Memory_Low", 0));
DataMembers.Add(new DataMember("Before_Kernel_Stack", DataMembers.Add(new DataMember("Before_Kernel_Stack", new byte[0x50000]));
new byte[0x50000])); DataMembers.Add(new DataMember("Kernel_Stack", new byte[0]));
DataMembers.Add(new DataMember("Kernel_Stack",
new byte[0]));
DataMembers.Add(new DataMember("MultiBootInfo_Structure", new uint[1])); DataMembers.Add(new DataMember("MultiBootInfo_Structure", new uint[1]));
} }