singrdk/base/Kernel/Singularity/Isal/ix/Idt.cs

88 lines
2.8 KiB
C#
Raw Normal View History

2008-11-17 18:29:00 -05:00
//////////////////////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
namespace Microsoft.Singularity.Isal.IX
{
// A lgdt pointer to the entries
//
[CLSCompliant(false)]
[AccessedByRuntime("referenced from c++")]
public struct Idtp
{
#if ISA_IX64
[AccessedByRuntime("referenced from c++")]
internal ushort pad1;
[AccessedByRuntime("referenced from c++")]
internal ushort pad2;
#endif
[AccessedByRuntime("referenced from c++")]
public ushort pad;
[AccessedByRuntime("referenced from c++")]
public ushort limit;
#if ISA_IX86
[AccessedByRuntime("referenced from c++")]
public uint addr;
#else
[AccessedByRuntime("referenced from c++")]
public ulong addr;
#endif
};
[CLSCompliant(false)]
[AccessedByRuntime("referenced from c++")]
public struct Idte
{
// An entry in the Interrupt Descriptor Table
[AccessedByRuntime("referenced from c++")]
public ushort offset_0_15;
[AccessedByRuntime("referenced from c++")]
public ushort selector;
[AccessedByRuntime("referenced from c++")]
public byte flags;
[AccessedByRuntime("referenced from c++")]
public byte access;
[AccessedByRuntime("referenced from c++")]
public ushort offset_16_31;
#if ISA_IX64
[AccessedByRuntime("referenced from c++")]
internal uint offset_32_63;
[AccessedByRuntime("referenced from c++")]
internal uint reserved;
#endif
///////////////////////////////////////// Interrupt Descriptor Tables.
//
[AccessedByRuntime("referenced from c++")]
public const uint PRESENT = 0x80;
[AccessedByRuntime("referenced from c++")]
public const uint DPL_RING3 = 0x60;
[AccessedByRuntime("referenced from c++")]
public const uint DPL_RING2 = 0x40;
[AccessedByRuntime("referenced from c++")]
public const uint DPL_RING1 = 0x20;
[AccessedByRuntime("referenced from c++")]
public const uint DPL_RING0 = 0x00;
[AccessedByRuntime("referenced from c++")]
public const uint TASK_GATE = 0x05;
[AccessedByRuntime("referenced from c++")]
public const uint CALL_GATE = 0x0c;
[AccessedByRuntime("referenced from c++")]
public const uint INT_GATE = 0x0e;
[AccessedByRuntime("referenced from c++")]
public const uint TRAP_GATE = 0x0f;
}
}