]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/CpuDxe/CpuGdt.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / UefiCpuPkg / CpuDxe / CpuGdt.h
1 /** @file
2 C based implementation of IA32 interrupt handling only
3 requiring a minimal assembly interrupt entry point.
4
5 Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #ifndef _CPU_GDT_H_
11 #define _CPU_GDT_H_
12
13 //
14 // Local structure definitions
15 //
16
17 #pragma pack (1)
18
19 //
20 // Global Descriptor Entry structures
21 //
22
23 typedef struct _GDT_ENTRY {
24 UINT16 Limit15_0;
25 UINT16 Base15_0;
26 UINT8 Base23_16;
27 UINT8 Type;
28 UINT8 Limit19_16_and_flags;
29 UINT8 Base31_24;
30 } GDT_ENTRY;
31
32 typedef
33 struct _GDT_ENTRIES {
34 GDT_ENTRY Null;
35 GDT_ENTRY Linear;
36 GDT_ENTRY LinearCode;
37 GDT_ENTRY SysData;
38 GDT_ENTRY SysCode;
39 GDT_ENTRY Spare4;
40 GDT_ENTRY LinearData64;
41 GDT_ENTRY LinearCode64;
42 GDT_ENTRY Spare5;
43 } GDT_ENTRIES;
44
45 #pragma pack ()
46
47 #define NULL_SEL OFFSET_OF (GDT_ENTRIES, Null)
48 #define LINEAR_SEL OFFSET_OF (GDT_ENTRIES, Linear)
49 #define LINEAR_CODE_SEL OFFSET_OF (GDT_ENTRIES, LinearCode)
50 #define SYS_DATA_SEL OFFSET_OF (GDT_ENTRIES, SysData)
51 #define SYS_CODE_SEL OFFSET_OF (GDT_ENTRIES, SysCode)
52 #define SPARE4_SEL OFFSET_OF (GDT_ENTRIES, Spare4)
53 #define LINEAR_DATA64_SEL OFFSET_OF (GDT_ENTRIES, LinearData64)
54 #define LINEAR_CODE64_SEL OFFSET_OF (GDT_ENTRIES, LinearCode64)
55 #define SPARE5_SEL OFFSET_OF (GDT_ENTRIES, Spare5)
56
57 #if defined (MDE_CPU_IA32)
58 #define CPU_CODE_SEL LINEAR_CODE_SEL
59 #define CPU_DATA_SEL LINEAR_SEL
60 #elif defined (MDE_CPU_X64)
61 #define CPU_CODE_SEL LINEAR_CODE64_SEL
62 #define CPU_DATA_SEL LINEAR_DATA64_SEL
63 #else
64 #error CPU type not supported for CPU GDT initialization!
65 #endif
66
67 #endif // _CPU_GDT_H_
68