VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/UefiCpuPkg/Include/StuffRsbNasm.inc@ 100307

Last change on this file since 100307 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • Property svn:eol-style set to native
File size: 1.2 KB
Line 
1;------------------------------------------------------------------------------
2;
3; Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
4; SPDX-License-Identifier: BSD-2-Clause-Patent
5;
6; Abstract:
7;
8; This file provides macro definitions for stuffing the Return Stack Buffer (RSB)
9; for NASM files.
10;
11;------------------------------------------------------------------------------
12
13%define RSB_STUFF_ENTRIES 0x20
14
15;
16; parameters:
17; @param 1: register to use as counter (e.g. IA32:eax, X64:rax)
18; @param 2: stack pointer to restore (IA32:esp, X64:rsp)
19; @param 3: the size of a stack frame (IA32:4, X64:8)
20;
21%macro StuffRsb 3
22 mov %1, RSB_STUFF_ENTRIES / 2
23 %%Unroll1:
24 call %%Unroll2
25 %%SpecTrap1:
26 pause
27 lfence
28 jmp %%SpecTrap1
29 %%Unroll2:
30 call %%StuffLoop
31 %%SpecTrap2:
32 pause
33 lfence
34 jmp %%SpecTrap2
35 %%StuffLoop:
36 dec %1
37 jnz %%Unroll1
38 add %2, RSB_STUFF_ENTRIES * %3 ; Restore the stack pointer
39%endmacro
40
41;
42; RSB stuffing macros for IA32 and X64
43;
44%macro StuffRsb32 0
45 StuffRsb eax, esp, 4
46%endmacro
47
48%macro StuffRsb64 0
49 StuffRsb rax, rsp, 8
50%endmacro
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette