svn commit: r348871 - in stable/12/sys/amd64: amd64 include

Konstantin Belousov kib at FreeBSD.org
Mon Jun 10 17:43:35 UTC 2019


Author: kib
Date: Mon Jun 10 17:43:33 2019
New Revision: 348871
URL: https://svnweb.freebsd.org/changeset/base/348871

Log:
  MFC r348539:
  amd64 ef_rt_arch_call: Preserve %rflags around call into EFI RT service.

Modified:
  stable/12/sys/amd64/amd64/efirt_support.S
  stable/12/sys/amd64/amd64/genassym.c
  stable/12/sys/amd64/include/efi.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/amd64/efirt_support.S
==============================================================================
--- stable/12/sys/amd64/amd64/efirt_support.S	Mon Jun 10 17:40:31 2019	(r348870)
+++ stable/12/sys/amd64/amd64/efirt_support.S	Mon Jun 10 17:43:33 2019	(r348871)
@@ -47,6 +47,9 @@ ENTRY(efi_rt_arch_call)
 	movq	%r13, EC_R13(%rdi)
 	movq	%r14, EC_R14(%rdi)
 	movq	%r15, EC_R15(%rdi)
+	pushfq
+	popq	%rax
+	movq	%rax, EC_RFLAGS(%rdi)
 	movq	PCPU(CURTHREAD), %rax
 	movq	%rdi, TD_MD+MD_EFIRT_TMP(%rax)
 	movq	PCPU(CURPCB), %rsi
@@ -98,6 +101,8 @@ efi_rt_arch_call_tail:
 	movq	EC_RBP(%rdi), %rbp
 	movq	EC_RSP(%rdi), %rsp
 	movq	EC_RBX(%rdi), %rbx
+	pushq	EC_RFLAGS(%rdi)
+	popfq
 
 	popq	%rbp
 	ret

Modified: stable/12/sys/amd64/amd64/genassym.c
==============================================================================
--- stable/12/sys/amd64/amd64/genassym.c	Mon Jun 10 17:40:31 2019	(r348870)
+++ stable/12/sys/amd64/amd64/genassym.c	Mon Jun 10 17:43:33 2019	(r348871)
@@ -272,3 +272,4 @@ ASSYM(EC_R12, offsetof(struct efirt_callinfo, ec_r12))
 ASSYM(EC_R13, offsetof(struct efirt_callinfo, ec_r13));
 ASSYM(EC_R14, offsetof(struct efirt_callinfo, ec_r14));
 ASSYM(EC_R15, offsetof(struct efirt_callinfo, ec_r15));
+ASSYM(EC_RFLAGS, offsetof(struct efirt_callinfo, ec_rflags));

Modified: stable/12/sys/amd64/include/efi.h
==============================================================================
--- stable/12/sys/amd64/include/efi.h	Mon Jun 10 17:40:31 2019	(r348870)
+++ stable/12/sys/amd64/include/efi.h	Mon Jun 10 17:43:33 2019	(r348871)
@@ -72,6 +72,7 @@ struct efirt_callinfo {
 	register_t	ec_r13;
 	register_t	ec_r14;
 	register_t	ec_r15;
+	register_t	ec_rflags;
 };
 
 #endif /* __AMD64_INCLUDE_EFI_H_ */


More information about the svn-src-all mailing list