On 02/05/21 08:58, Ni, Ray wrote: > Signed-off-by: Ray Ni <ray...@intel.com> > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > --- > MdePkg/Include/Ia32/Nasm.inc | 38 ++++++++++++++++++++++++++++++++++++ > MdePkg/Include/X64/Nasm.inc | 38 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 76 insertions(+) > > diff --git a/MdePkg/Include/Ia32/Nasm.inc b/MdePkg/Include/Ia32/Nasm.inc > index 31ce861f1e..017fe5ffd8 100644 > --- a/MdePkg/Include/Ia32/Nasm.inc > +++ b/MdePkg/Include/Ia32/Nasm.inc > @@ -20,3 +20,41 @@ > %macro INCSSP_EAX 0 > DB 0xF3, 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 resd > +%define CTYPE_INTN resd > diff --git a/MdePkg/Include/X64/Nasm.inc b/MdePkg/Include/X64/Nasm.inc > index 42412735ea..b48d8680bb 100644 > --- a/MdePkg/Include/X64/Nasm.inc > +++ b/MdePkg/Include/X64/Nasm.inc > @@ -20,3 +20,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 >
Reviewed-by: Laszlo Ersek <ler...@redhat.com> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#71362): https://edk2.groups.io/g/devel/message/71362 Mute This Topic: https://groups.io/mt/80401291/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-