singrdk/base/Kernel/Singularity/Isal/arm/DispatchStack.cs

41 lines
1.2 KiB
C#
Raw Normal View History

2008-11-17 18:29:00 -05:00
//////////////////////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This file defines an architecture-neutral encapsulation of the state which is saved
// during a thread context switch.
using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
namespace Microsoft.Singularity.Isal.Arm
{
// DispatchStack is a small per-cpu stack allocated to be used as the shadowed
// sp in exception modes. Its sole purpose is to save enough state to get
// us back to normal execution mode.
// The code in Interrupt.asm assumes that r4 is at offset 0 and
[AccessedByRuntime("referenced in asm", AllFields = true)]
[CLSCompliant(false)]
[StructLayout(LayoutKind.Sequential)]
public struct DispatchStack
{
private uint r4;
private uint sp; // aka r13
public unsafe UIntPtr StackBegin
{
[NoHeapAllocation]
get {
fixed (uint *p = &r4) {
return (UIntPtr) p;
}
}
}
}
};