91 lines
2.7 KiB
C#
91 lines
2.7 KiB
C#
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity - Singularity ABI
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// File: DebugService.cs
|
||
|
//
|
||
|
// Note:
|
||
|
//
|
||
|
|
||
|
using System;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
using System.Threading;
|
||
|
using Microsoft.Singularity;
|
||
|
using Microsoft.Singularity.Hal;
|
||
|
using Microsoft.Singularity.Memory;
|
||
|
using Microsoft.Singularity.Isal;
|
||
|
|
||
|
namespace Microsoft.Singularity.V1.Services
|
||
|
{
|
||
|
[AccessedByRuntime("Method called from HAL.cpp")]
|
||
|
public struct PlatformService
|
||
|
{
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
public static bool DisableInterrupts()
|
||
|
{
|
||
|
return PrivilegedGate.DisableInterrupts();
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
public static void RestoreInterrupts(bool enabled)
|
||
|
{
|
||
|
PrivilegedGate.RestoreInterrupts(enabled);
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
public static bool InterruptsDisabled()
|
||
|
{
|
||
|
return PrivilegedGate.InterruptsDisabled();
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
[CLSCompliant(false)]
|
||
|
public static void CleanAndInvalidateDCache(UIntPtr address, UIntPtr length)
|
||
|
{
|
||
|
#if ISA_ARM
|
||
|
Microsoft.Singularity.Isal.Arm.XScale.Mmu.CleanInvalidateDCacheLines(address, length);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
[CLSCompliant(false)]
|
||
|
public static void InvalidateDCache(UIntPtr address, UIntPtr length)
|
||
|
{
|
||
|
#if ISA_ARM
|
||
|
Microsoft.Singularity.Isal.Arm.XScale.Mmu.InvalidateDCacheLines(address, length);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
[CLSCompliant(false)]
|
||
|
public static void SetCacheAttributes(UIntPtr address, UIntPtr length, bool cacheable, bool bufferable)
|
||
|
{
|
||
|
#if ISA_ARM
|
||
|
Microsoft.Singularity.Isal.Arm.XScale.Mmu.SetCacheAttributes(address, length, cacheable, bufferable);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
public static int GetProcessorContextOffset()
|
||
|
{
|
||
|
return Platform.ThePlatform.CpuRecordPointerOffset;
|
||
|
}
|
||
|
|
||
|
[ExternalEntryPoint]
|
||
|
[AccessedByRuntime("Called from HAL.cpp")]
|
||
|
public static int GetThreadContextOffset()
|
||
|
{
|
||
|
return Platform.ThePlatform.ThreadRecordPointerOffset;
|
||
|
}
|
||
|
}
|
||
|
}
|