This fixes a regression introduce in d613991a8e
reported on IRC by Mathieu Othacehe <othacehe@gnu.org>.
* gnu/packages/patches/grub-cross-system-i686.patch
[GRUB_MACHINE_EFI && !__x86_64__]: Add missing .byte alternative to 64-bit
instruction.
		
	
			
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Not upstreamed.
 | |
| Fixes cross-build for the Hurd, from i686-linux,
 | |
| see <https://bugs.gnu.org/41982>.
 | |
| 
 | |
| From 17b242e7b80108f1467037e15b605595e4823b2e Mon Sep 17 00:00:00 2001
 | |
| From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
 | |
| Date: Sun, 21 Jun 2020 15:10:40 +0200
 | |
| Subject: [PATCH v2] grub-core: Build fixes for i386
 | |
| Content-Transfer-Encoding: 8bit
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| 
 | |
| * grub-core/lib/i386/relocator64.S: Avoid x86_64 instructions on i386.
 | |
| ---
 | |
|  grub-core/lib/i386/relocator64.S | 33 +++++++++++++++++++++++++++++++-
 | |
|  1 file changed, 32 insertions(+), 1 deletion(-)
 | |
| 
 | |
| diff --git a/grub-core/lib/i386/relocator64.S b/grub-core/lib/i386/relocator64.S
 | |
| index 148f38adb..ea39908c1 100644
 | |
| --- a/grub-core/lib/i386/relocator64.S
 | |
| +++ b/grub-core/lib/i386/relocator64.S
 | |
| @@ -63,7 +63,9 @@ VARIABLE(grub_relocator64_cr3)
 | |
|  	movq	%rax, %cr3
 | |
|  #endif
 | |
|  
 | |
| +#ifdef __x86_64__
 | |
|  	.code64
 | |
| +#endif
 | |
|  
 | |
|  	/* mov imm64, %rax */
 | |
|  	.byte 	0x48
 | |
| @@ -71,7 +73,14 @@ VARIABLE(grub_relocator64_cr3)
 | |
|  VARIABLE(grub_relocator64_rsp)
 | |
|  	.quad	0
 | |
|  
 | |
| +#ifndef __x86_64__
 | |
| +	/* movq	%rax, %rsp */
 | |
| +	.byte 	0x48
 | |
| +	.byte	0x89
 | |
| +	.byte	0xc4
 | |
| +#else
 | |
|  	movq	%rax, %rsp
 | |
| +#endif
 | |
|  
 | |
|  #ifdef GRUB_MACHINE_EFI
 | |
|  	jmp	LOCAL(skip_efi_stack_align)
 | |
| @@ -85,7 +94,14 @@ VARIABLE(grub_relocator64_rsp)
 | |
|  	 */
 | |
|  VARIABLE(grub_relocator64_efi_start)
 | |
|  	/* Align the stack as UEFI spec requires. */
 | |
| +#ifndef __x86_64__
 | |
| +	.byte 0x48
 | |
| +        .byte 0x83
 | |
| +        .byte 0xe4
 | |
| +        .byte 0xf0
 | |
| +#else
 | |
|  	andq	$~15, %rsp
 | |
| +#endif
 | |
|  
 | |
|  LOCAL(skip_efi_stack_align):
 | |
|  #endif
 | |
| @@ -95,8 +111,15 @@ LOCAL(skip_efi_stack_align):
 | |
|  VARIABLE(grub_relocator64_rsi)
 | |
|  	.quad	0
 | |
|  
 | |
| +#ifndef	__x86_64__
 | |
| +	/* movq	%rax, %rsi */
 | |
| +	.byte 	0x48
 | |
| +	.byte	0x89
 | |
| +	.byte 	0xc6
 | |
| +#else
 | |
|  	movq	%rax, %rsi
 | |
| -	
 | |
| +#endif
 | |
| +
 | |
|  	/* mov imm64, %rax */
 | |
|  	.byte 	0x48
 | |
|  	.byte	0xb8
 | |
| @@ -128,6 +151,14 @@ VARIABLE(grub_relocator64_rdx)
 | |
|  #ifdef __APPLE__
 | |
|  	.byte 0xff, 0x25
 | |
|  	.quad 0
 | |
| +#elif !defined (__x86_64__)
 | |
| +	/* jmp *LOCAL(jump_addr) (%rip) */
 | |
| +	.byte 0xff
 | |
| +        .byte 0x25
 | |
| +	.byte 0
 | |
| +	.byte 0
 | |
| +	.byte 0
 | |
| +	.byte 0
 | |
|  #else
 | |
|  	jmp *LOCAL(jump_addr) (%rip)
 | |
|  #endif
 | |
| -- 
 | |
| Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
 | |
| Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
 | |
| 
 |