X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FX64%2FNasm.inc;fp=MdePkg%2FInclude%2FX64%2FNasm.inc;h=527f71e9eb4d34ab9e14d24640f898364e1272bb;hp=e57a803c81a7f3a554835ee19a35a767f6b7de47;hb=e59760f87e6fdd55f47d11e80455e341219c2be8;hpb=b8a92fa2fea548dccacc2f228b607b7febdf81c0 diff --git a/MdePkg/Include/X64/Nasm.inc b/MdePkg/Include/X64/Nasm.inc index e57a803c81..527f71e9eb 100644 --- a/MdePkg/Include/X64/Nasm.inc +++ b/MdePkg/Include/X64/Nasm.inc @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ; -; Copyright (c) 2019, Intel Corporation. All rights reserved.
+; Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.
; SPDX-License-Identifier: BSD-2-Clause-Patent ; ; Abstract: @@ -32,3 +32,41 @@ %macro INCSSP_RAX 0 DB 0xF3, 0x48, 0x0F, 0xAE, 0xE8 %endmacro + +; NASM provides built-in macros STRUC and ENDSTRUC for structure definition. +; For example, to define a structure called mytype containing a longword, +; a word, a byte and a string of bytes, you might code +; +; struc mytype +; +; mt_long: resd 1 +; mt_word: resw 1 +; mt_byte: resb 1 +; mt_str: resb 32 +; +; endstruc +; +; Below macros are help to map the C types and the RESB family of pseudo-instructions. +; So that the above structure definition can be coded as +; +; struc mytype +; +; mt_long: CTYPE_UINT32 1 +; mt_word: CTYPE_UINT16 1 +; mt_byte: CTYPE_UINT8 1 +; mt_str: CTYPE_CHAR8 32 +; +; endstruc +%define CTYPE_UINT64 resq +%define CTYPE_INT64 resq +%define CTYPE_UINT32 resd +%define CTYPE_INT32 resd +%define CTYPE_UINT16 resw +%define CTYPE_INT16 resw +%define CTYPE_BOOLEAN resb +%define CTYPE_UINT8 resb +%define CTYPE_CHAR8 resb +%define CTYPE_INT8 resb + +%define CTYPE_UINTN resq +%define CTYPE_INTN resq