REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3790 Replace Opcode with the corresponding instructions. The code changes have been verified with CompareBuild.py tool, which can be used to compare the results of two different EDK II builds to determine if they generate the same binaries. (tool link: https://github.com/mdkinney/edk2/tree/sandbox/CompareBuild) Signed-off-by: Jason Lou <yun.lou@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Rahul Kumar <rahul1.kumar@intel.com>
35 lines
807 B
NASM
35 lines
807 B
NASM
;------------------------------------------------------------------------------ ;
|
|
; Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
|
|
; SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
;
|
|
;-------------------------------------------------------------------------------
|
|
|
|
%include "Nasm.inc"
|
|
|
|
DEFAULT REL
|
|
SECTION .text
|
|
|
|
global ASM_PFX(DisableCet)
|
|
ASM_PFX(DisableCet):
|
|
|
|
; Skip the pushed data for call
|
|
mov rax, 1
|
|
incsspq rax
|
|
|
|
mov rax, cr4
|
|
btr eax, 23 ; clear CET
|
|
mov cr4, rax
|
|
ret
|
|
|
|
global ASM_PFX(EnableCet)
|
|
ASM_PFX(EnableCet):
|
|
|
|
mov rax, cr4
|
|
bts eax, 23 ; set CET
|
|
mov cr4, rax
|
|
|
|
; use jmp to skip the check for ret
|
|
pop rax
|
|
jmp rax
|
|
|