]>
Commit | Line | Data |
---|---|---|
68edd7db JY |
1 | ;------------------------------------------------------------------------------\r |
2 | ;\r | |
e59760f8 | 3 | ; Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.<BR>\r |
9344f092 | 4 | ; SPDX-License-Identifier: BSD-2-Clause-Patent\r |
68edd7db JY |
5 | ;\r |
6 | ; Abstract:\r | |
7 | ;\r | |
8 | ; This file provides macro definitions for NASM files.\r | |
9 | ;\r | |
10 | ;------------------------------------------------------------------------------\r | |
11 | \r | |
bdf1df8a SW |
12 | %macro SAVEPREVSSP 0\r |
13 | DB 0xF3, 0x0F, 0x01, 0xEA\r | |
14 | %endmacro\r | |
15 | \r | |
16 | %macro CLRSSBSY_EAX 0\r | |
17 | DB 0x67, 0xF3, 0x0F, 0xAE, 0x30\r | |
18 | %endmacro\r | |
19 | \r | |
20 | %macro RSTORSSP_EAX 0\r | |
21 | DB 0x67, 0xF3, 0x0F, 0x01, 0x28\r | |
22 | %endmacro\r | |
23 | \r | |
68edd7db JY |
24 | %macro SETSSBSY 0\r |
25 | DB 0xF3, 0x0F, 0x01, 0xE8\r | |
26 | %endmacro\r | |
27 | \r | |
28 | %macro READSSP_EAX 0\r | |
29 | DB 0xF3, 0x0F, 0x1E, 0xC8\r | |
30 | %endmacro\r | |
31 | \r | |
32 | %macro INCSSP_EAX 0\r | |
33 | DB 0xF3, 0x0F, 0xAE, 0xE8\r | |
34 | %endmacro\r | |
e59760f8 RN |
35 | \r |
36 | ; NASM provides built-in macros STRUC and ENDSTRUC for structure definition.\r | |
37 | ; For example, to define a structure called mytype containing a longword,\r | |
38 | ; a word, a byte and a string of bytes, you might code\r | |
39 | ;\r | |
40 | ; struc mytype\r | |
41 | ;\r | |
42 | ; mt_long: resd 1\r | |
43 | ; mt_word: resw 1\r | |
44 | ; mt_byte: resb 1\r | |
45 | ; mt_str: resb 32\r | |
46 | ;\r | |
47 | ; endstruc\r | |
48 | ;\r | |
49 | ; Below macros are help to map the C types and the RESB family of pseudo-instructions.\r | |
50 | ; So that the above structure definition can be coded as\r | |
51 | ;\r | |
52 | ; struc mytype\r | |
53 | ;\r | |
54 | ; mt_long: CTYPE_UINT32 1\r | |
55 | ; mt_word: CTYPE_UINT16 1\r | |
56 | ; mt_byte: CTYPE_UINT8 1\r | |
57 | ; mt_str: CTYPE_CHAR8 32\r | |
58 | ;\r | |
59 | ; endstruc\r | |
60 | %define CTYPE_UINT64 resq\r | |
61 | %define CTYPE_INT64 resq\r | |
62 | %define CTYPE_UINT32 resd\r | |
63 | %define CTYPE_INT32 resd\r | |
64 | %define CTYPE_UINT16 resw\r | |
65 | %define CTYPE_INT16 resw\r | |
66 | %define CTYPE_BOOLEAN resb\r | |
67 | %define CTYPE_UINT8 resb\r | |
68 | %define CTYPE_CHAR8 resb\r | |
69 | %define CTYPE_INT8 resb\r | |
70 | \r | |
71 | %define CTYPE_UINTN resd\r | |
72 | %define CTYPE_INTN resd\r |