diff --git a/Tests/Kernels/ProcessorTests/Kernel.cs b/Tests/Kernels/ProcessorTests/Kernel.cs index 9ef432177..2320625f3 100644 --- a/Tests/Kernels/ProcessorTests/Kernel.cs +++ b/Tests/Kernels/ProcessorTests/Kernel.cs @@ -25,6 +25,7 @@ namespace ProcessorTests TestVendorNameIsNotBlank(); TestCycleCount(); TestCycleRateIsNotZero(); + TestMultiboot(); TestController.Completed(); } @@ -36,6 +37,11 @@ namespace ProcessorTests } } + public void TestMultiboot() + { + Assert.IsTrue(Multiboot.GetMBIAddress() != 0, $"Multiboot.GetMBIAddress works {Multiboot.GetMBIAddress()}"); + } + public void TestBrandStringBlank() { string brandString = CPU.GetCPUBrandString(); diff --git a/source/Cosmos.Core_Asm/MultibootImpl.cs b/source/Cosmos.Core_Asm/MultibootImpl.cs index d3c9226ac..c2203981f 100644 --- a/source/Cosmos.Core_Asm/MultibootImpl.cs +++ b/source/Cosmos.Core_Asm/MultibootImpl.cs @@ -1,12 +1,25 @@ using Cosmos.Core; using IL2CPU.API.Attribs; +using XSharp; +using XSharp.Assembler; namespace Cosmos.Core_Asm { [Plug(Target = typeof(Multiboot))] public class MultibootImpl { - [PlugMethod(Assembler = typeof(MultibootAsm))] - public static uint GetMBIAddress() => throw null; + [PlugMethod(Assembler = typeof(MultibootImplAsm))] + public static uint GetMBIAddress() + { + return 0; + } + } + + public class MultibootImplAsm : AssemblerMethod + { + public override void AssembleNew(Assembler aAssembler, object aMethodInfo) + { + XS.Push("MultibootSignature"); + } } }