mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-21 05:18:38 +00:00
This commit is contained in:
parent
ea1d8f9db1
commit
ea2a4196ce
5 changed files with 30 additions and 32 deletions
|
|
@ -88,6 +88,7 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Docs", "..\Docs", "{67E7DEF
|
|||
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||
Release.AspNetCompiler.FixedNames = "false"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
VWDPort = "4516"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
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}
|
||||
{AB24E403-54F3-4F67-B5E0-119A7227AAC1} = {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}
|
||||
{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}
|
||||
{9D82B35C-7133-4ADE-AA5C-0FFB2BFA8BA6} = {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}
|
||||
{52BF0A64-EBEF-420A-9F27-6C5226A4B77B} = {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}
|
||||
{239E33A7-F0C3-4801-85CA-4D8F89A31DC0} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
||||
{6658FCE0-7032-4B7B-BD95-F2765C393442} = {2DF5F17F-4890-4856-ADFD-4DE23282C3B7}
|
||||
{6882C74B-3ED2-4D76-9E7B-67B6A28808BC} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
|
||||
{23476FAD-3712-4A4B-90C0-CCCC9AC8D953} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@ namespace Cosmos.Compiler.DebugStub {
|
|||
static protected DataMember32 DebugTraceMode;
|
||||
// enum Status
|
||||
static protected DataMember32 DebugStatus;
|
||||
// Nesting control for non steppable routines
|
||||
static protected DataMember32 DebugSuspendLevel;
|
||||
|
||||
public DebugStub(int aComNo) {
|
||||
mComNo = aComNo;
|
||||
|
|
@ -114,8 +116,6 @@ namespace Cosmos.Compiler.DebugStub {
|
|||
|
||||
// Old method, need to convert to fields
|
||||
mAsm.DataMembers.AddRange(new DataMember[]{
|
||||
// Nesting control for non steppable routines
|
||||
new DataMember("DebugSuspendLevel", 0),
|
||||
// Nesting control for non steppable routines
|
||||
new DataMember("DebugResumeLevel", 0),
|
||||
// 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
|
||||
// happen in between them which could also cause double entry.
|
||||
DisableInterrupts();
|
||||
Memory["DebugSuspendLevel", 32].Compare(0);
|
||||
DebugSuspendLevel.Value.Compare(0);
|
||||
JumpIf(Flags.Equal, "DebugStub_Running");
|
||||
// DebugStub is already running, so exit.
|
||||
// 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 override void Assemble() {
|
||||
Memory["DebugSuspendLevel", 32]++;
|
||||
DebugSuspendLevel.Value++;
|
||||
}
|
||||
}
|
||||
|
||||
public class DebugResume : CodeBlock {
|
||||
public override void Assemble() {
|
||||
Memory["DebugSuspendLevel", 32]--;
|
||||
DebugSuspendLevel.Value--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,9 +19,18 @@ namespace Cosmos.Compiler.XSharp {
|
|||
return new MemoryAction(ElementReference.New(Name)) { IsIndirect = true, Size = 32 };
|
||||
}
|
||||
set {
|
||||
new Move {
|
||||
DestinationRef = ElementReference.New(Name), DestinationIsIndirect = true
|
||||
, SourceValue = value.Value.GetValueOrDefault(), SourceRef = value.Reference, SourceReg = value.Register, SourceIsIndirect = value.IsIndirect };
|
||||
// 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 {
|
||||
DestinationRef = ElementReference.New(Name),
|
||||
DestinationIsIndirect = true,
|
||||
SourceValue = value.Value.GetValueOrDefault(),
|
||||
SourceRef = value.Reference,
|
||||
SourceReg = value.Register,
|
||||
SourceIsIndirect = value.IsIndirect
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,11 +33,13 @@ namespace Cosmos.Compiler.XSharp {
|
|||
|
||||
public static MemoryAction operator ++(MemoryAction aTarget) {
|
||||
aTarget.ApplyToDest(new INC());
|
||||
// Must return null, see DataMember.this[] comment
|
||||
return null;
|
||||
}
|
||||
|
||||
public static MemoryAction operator --(MemoryAction aTarget) {
|
||||
aTarget.ApplyToDest(new Dec());
|
||||
// Must return null, see DataMember.this[] comment
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -258,9 +258,6 @@ namespace Cosmos.IL2CPU.X86 {
|
|||
if (mComNumber > 0) {
|
||||
var xStub = new DebugStub(mComNumber);
|
||||
xStub.Assemble();
|
||||
|
||||
var xStub2 = new DebugPoint();
|
||||
xStub2.Assemble();
|
||||
} else {
|
||||
new Label("DebugStub_Step");
|
||||
new Return();
|
||||
|
|
@ -271,12 +268,9 @@ namespace Cosmos.IL2CPU.X86 {
|
|||
#if !LFB_1024_8
|
||||
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
|
||||
uint xFlags = 0x10003;
|
||||
DataMembers.Add(new DataMember("MultibootSignature",
|
||||
new uint[] { 0x1BADB002 }));
|
||||
DataMembers.Add(new DataMember("MultibootFlags",
|
||||
xFlags));
|
||||
DataMembers.Add(new DataMember("MultibootChecksum",
|
||||
(int)(0 - (xFlags + 0x1BADB002))));
|
||||
DataMembers.Add(new DataMember("MultibootSignature", new uint[] { 0x1BADB002 }));
|
||||
DataMembers.Add(new DataMember("MultibootFlags", xFlags));
|
||||
DataMembers.Add(new DataMember("MultibootChecksum", (int)(0 - (xFlags + 0x1BADB002))));
|
||||
DataMembers.Add(new DataMember("MultibootHeaderAddr", ElementReference.New("MultibootSignature")));
|
||||
DataMembers.Add(new DataMember("MultibootLoadAddr", ElementReference.New("MultibootSignature")));
|
||||
DataMembers.Add(new DataMember("MultibootLoadEndAddr", ElementReference.New("_end_code")));
|
||||
|
|
@ -285,12 +279,9 @@ namespace Cosmos.IL2CPU.X86 {
|
|||
DataMembers.Add(new DataEndIfDefined());
|
||||
DataMembers.Add(new DataIfDefined("ELF_COMPILATION"));
|
||||
xFlags = 0x00003;
|
||||
DataMembers.Add(new DataMember("MultibootSignature",
|
||||
new uint[] { 0x1BADB002 }));
|
||||
DataMembers.Add(new DataMember("MultibootFlags",
|
||||
xFlags));
|
||||
DataMembers.Add(new DataMember("MultibootChecksum",
|
||||
(int)(0 - (xFlags + 0x1BADB002))));
|
||||
DataMembers.Add(new DataMember("MultibootSignature", new uint[] { 0x1BADB002 }));
|
||||
DataMembers.Add(new DataMember("MultibootFlags", xFlags));
|
||||
DataMembers.Add(new DataMember("MultibootChecksum", (int)(0 - (xFlags + 0x1BADB002))));
|
||||
DataMembers.Add(new DataEndIfDefined());
|
||||
#else
|
||||
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
|
||||
|
|
@ -330,10 +321,8 @@ namespace Cosmos.IL2CPU.X86 {
|
|||
// memory
|
||||
DataMembers.Add(new DataMember("MultiBootInfo_Memory_High", 0));
|
||||
DataMembers.Add(new DataMember("MultiBootInfo_Memory_Low", 0));
|
||||
DataMembers.Add(new DataMember("Before_Kernel_Stack",
|
||||
new byte[0x50000]));
|
||||
DataMembers.Add(new DataMember("Kernel_Stack",
|
||||
new byte[0]));
|
||||
DataMembers.Add(new DataMember("Before_Kernel_Stack", new byte[0x50000]));
|
||||
DataMembers.Add(new DataMember("Kernel_Stack", new byte[0]));
|
||||
DataMembers.Add(new DataMember("MultiBootInfo_Structure", new uint[1]));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue