75 lines
2.7 KiB
C#
75 lines
2.7 KiB
C#
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// 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
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|