]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/X64/Nasm.inc
MdePkg/Nasm.inc: add macros for C types used in structure definition
[mirror_edk2.git] / MdePkg / Include / X64 / Nasm.inc
CommitLineData
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_RAX 0\r
17 DB 0xF3, 0x0F, 0xAE, 0x30\r
18%endmacro\r
19\r
20%macro RSTORSSP_RAX 0\r
21 DB 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_RAX 0\r
29 DB 0xF3, 0x48, 0x0F, 0x1E, 0xC8\r
30%endmacro\r
31\r
32%macro INCSSP_RAX 0\r
33 DB 0xF3, 0x48, 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 resq\r
72%define CTYPE_INTN resq\r