| ;------------------------------------------------------------------------------ | |
| ; | |
| ; Copyright (c) 2022, Intel Corporation. All rights reserved.<BR> | |
| ; SPDX-License-Identifier: BSD-2-Clause-Patent | |
| ; | |
| ; Abstract: | |
| ; | |
| ; Provide macro to push/pop registers in X64 | |
| ; | |
| ;------------------------------------------------------------------------------ | |
| ;----------------------------------------------------------------------------- | |
| ; Macro: PUSHA_64 | |
| ; | |
| ; Description: Saves all registers on stack | |
| ; | |
| ; Input: None | |
| ; | |
| ; Output: None | |
| ;----------------------------------------------------------------------------- | |
| %macro PUSHA_64 0 | |
| push r8 | |
| push r9 | |
| push r10 | |
| push r11 | |
| push r12 | |
| push r13 | |
| push r14 | |
| push r15 | |
| push rax | |
| push rcx | |
| push rdx | |
| push rbx | |
| push rsp | |
| push rbp | |
| push rsi | |
| push rdi | |
| %endmacro | |
| ;----------------------------------------------------------------------------- | |
| ; Macro: POPA_64 | |
| ; | |
| ; Description: Restores all registers from stack | |
| ; | |
| ; Input: None | |
| ; | |
| ; Output: None | |
| ;----------------------------------------------------------------------------- | |
| %macro POPA_64 0 | |
| pop rdi | |
| pop rsi | |
| pop rbp | |
| pop rsp | |
| pop rbx | |
| pop rdx | |
| pop rcx | |
| pop rax | |
| pop r15 | |
| pop r14 | |
| pop r13 | |
| pop r12 | |
| pop r11 | |
| pop r10 | |
| pop r9 | |
| pop r8 | |
| %endmacro | |