;------------------------------------------------------------------------------\r
;\r
-; Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>\r
; SPDX-License-Identifier: BSD-2-Clause-Patent\r
;\r
; Abstract:\r
;\r
;------------------------------------------------------------------------------\r
\r
-%macro SAVEPREVSSP 0\r
- DB 0xF3, 0x0F, 0x01, 0xEA\r
-%endmacro\r
-\r
-%macro CLRSSBSY_EAX 0\r
- DB 0x67, 0xF3, 0x0F, 0xAE, 0x30\r
-%endmacro\r
-\r
-%macro RSTORSSP_EAX 0\r
- DB 0x67, 0xF3, 0x0F, 0x01, 0x28\r
-%endmacro\r
-\r
-%macro SETSSBSY 0\r
- DB 0xF3, 0x0F, 0x01, 0xE8\r
-%endmacro\r
-\r
-%macro READSSP_EAX 0\r
- DB 0xF3, 0x0F, 0x1E, 0xC8\r
-%endmacro\r
+; NASM provides built-in macros STRUC and ENDSTRUC for structure definition.\r
+; For example, to define a structure called mytype containing a longword,\r
+; a word, a byte and a string of bytes, you might code\r
+;\r
+; struc mytype\r
+;\r
+; mt_long: resd 1\r
+; mt_word: resw 1\r
+; mt_byte: resb 1\r
+; mt_str: resb 32\r
+;\r
+; endstruc\r
+;\r
+; Below macros are help to map the C types and the RESB family of pseudo-instructions.\r
+; So that the above structure definition can be coded as\r
+;\r
+; struc mytype\r
+;\r
+; mt_long: CTYPE_UINT32 1\r
+; mt_word: CTYPE_UINT16 1\r
+; mt_byte: CTYPE_UINT8 1\r
+; mt_str: CTYPE_CHAR8 32\r
+;\r
+; endstruc\r
+%define CTYPE_UINT64 resq\r
+%define CTYPE_INT64 resq\r
+%define CTYPE_UINT32 resd\r
+%define CTYPE_INT32 resd\r
+%define CTYPE_UINT16 resw\r
+%define CTYPE_INT16 resw\r
+%define CTYPE_BOOLEAN resb\r
+%define CTYPE_UINT8 resb\r
+%define CTYPE_CHAR8 resb\r
+%define CTYPE_INT8 resb\r
\r
-%macro INCSSP_EAX 0\r
- DB 0xF3, 0x0F, 0xAE, 0xE8\r
-%endmacro\r
+%define CTYPE_UINTN resd\r
+%define CTYPE_INTN resd\r