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

75 lines
2.7 KiB
C#
Raw Permalink Normal View History

2008-11-17 18:29:00 -05:00
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Segment table definition. Currently only used for intel architectures.
using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
namespace Microsoft.Singularity.Isal.IX
{
[AccessedByRuntime("referenced in c++")]
[CLSCompliant(false)]
public struct DescriptorTable
{
#if ISA_IX
[AccessedByRuntime("referenced in c++")]
public struct Gdt
{
[AccessedByRuntime("referenced in c++")]
public Gdte nul; // Null segment
[AccessedByRuntime("referenced in c++")]
private Gdte pv; // 16-bit video, used in boot loader only
// 0x10
[AccessedByRuntime("referenced in c++")]
private Gdte rc; // 16-bit code, used to align with RM code in boot loader
[AccessedByRuntime("referenced in c++")]
private Gdte rd; // 16-bit data, used to align with RM data in boot loader
// 0x20
[AccessedByRuntime("referenced in c++")]
private Gdte pc; // 32-bit code
[AccessedByRuntime("referenced in c++")]
private Gdte pd; // 32-bit data
// 0x30
[AccessedByRuntime("referenced in c++")]
private Gdte lc; // 64-bit code
[AccessedByRuntime("referenced in c++")]
private Gdte ld; // 64-bit data
// 0x40
[AccessedByRuntime("referenced in c++")]
public Gdte uc; // User mode code - used in paging mode only
[AccessedByRuntime("referenced in c++")]
public Gdte ud; // User mode data - used in paging mode only
// 0x50
[AccessedByRuntime("referenced in c++")]
public Gdte pp; // Kernel mode per-processor data
[AccessedByRuntime("referenced in c++")]
public Gdte nn; // Unused
// 0x60
#if ISA_IX86
[AccessedByRuntime("referenced in c++")]
public Gdte tss; // Currently executing task segment
#elif ISA_IX64
[AccessedByRuntime("referenced in c++")]
public Gdte64 tss; // Long mode 64-bit TSS
#endif
}
[AccessedByRuntime("referenced in c++")]
public Gdt gdt;
[AccessedByRuntime("referenced in c++")]
public Gdtp gdtPtr;
#endif // ISA_IX
}
};