mirror of https://github.com/ipxe/ipxe.git
				
				
				
			[librm] Do not preserve flags unnecessarily
No callers of prot_to_phys, phys_to_prot, or intr_to_prot require the flags to be preserved. Remove the unnecessary pushfl/popfl pairs. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/45/head
							parent
							
								
									ea203e4fe1
								
							
						
					
					
						commit
						5fbfe50ccb
					
				|  | @ -506,7 +506,7 @@ rm_gdtr: | |||
|  * | ||||
|  * Switch from 32-bit protected mode with physical addresses to 32-bit | ||||
|  * protected mode with virtual addresses.  %esp is adjusted to a | ||||
|  * virtual address.  All other registers and flags are preserved. | ||||
|  * virtual address.  All other registers are preserved. | ||||
|  * | ||||
|  * The return address for this function should be a 32-bit physical | ||||
|  * (sic) address. | ||||
|  | @ -517,8 +517,7 @@ rm_gdtr: | |||
| 	.code32 | ||||
| 	.globl phys_to_prot
 | ||||
| phys_to_prot: | ||||
| 	/* Preserve registers and flags */ | ||||
| 	pushfl | ||||
| 	/* Preserve registers */ | ||||
| 	pushl	%eax | ||||
| 	pushl	%ebp | ||||
| 
 | ||||
|  | @ -537,12 +536,11 @@ phys_to_prot: | |||
| 	subl	%ebp, %esp | ||||
| 
 | ||||
| 	/* Adjust return address to a virtual address */ | ||||
| 	subl	%ebp, 12(%esp) | ||||
| 	subl	%ebp, 8(%esp) | ||||
| 
 | ||||
| 	/* Restore registers and flags, and return */ | ||||
| 	/* Restore registers and return */ | ||||
| 	popl	%ebp | ||||
| 	popl	%eax | ||||
| 	popfl | ||||
| 	ret | ||||
| 
 | ||||
| 	/* Expose as _phys_to_virt for use by COMBOOT */ | ||||
|  | @ -554,7 +552,7 @@ phys_to_prot: | |||
|  * | ||||
|  * Switch from 32-bit protected mode with virtual addresses to 32-bit | ||||
|  * protected mode with physical addresses.  %esp is adjusted to a | ||||
|  * physical address.  All other registers and flags are preserved. | ||||
|  * physical address.  All other registers are preserved. | ||||
|  * | ||||
|  * The return address for this function should be a 32-bit virtual | ||||
|  * (sic) address. | ||||
|  | @ -564,14 +562,13 @@ phys_to_prot: | |||
| 	.section ".text.prot_to_phys", "ax", @progbits
 | ||||
| 	.code32 | ||||
| prot_to_phys: | ||||
| 	/* Preserve registers and flags */ | ||||
| 	pushfl | ||||
| 	/* Preserve registers */ | ||||
| 	pushl	%eax | ||||
| 	pushl	%ebp | ||||
| 
 | ||||
| 	/* Adjust return address to a physical address */ | ||||
| 	movl	VIRTUAL(virt_offset), %ebp | ||||
| 	addl	%ebp, 12(%esp) | ||||
| 	addl	%ebp, 8(%esp) | ||||
| 
 | ||||
| 	/* Switch to physical code segment */ | ||||
| 	cli | ||||
|  | @ -589,10 +586,9 @@ prot_to_phys: | |||
| 	movw	%ax, %ss | ||||
| 	addl	%ebp, %esp | ||||
| 
 | ||||
| 	/* Restore registers and flags, and return */ | ||||
| 	/* Restore registers and return */ | ||||
| 	popl	%ebp | ||||
| 	popl	%eax | ||||
| 	popfl | ||||
| 	ret | ||||
| 
 | ||||
| 	/* Expose as _virt_to_phys for use by COMBOOT */ | ||||
|  | @ -605,7 +601,7 @@ prot_to_phys: | |||
|  * Switch from 32-bit protected mode with a virtual code segment and | ||||
|  * either a physical or virtual stack segment to 32-bit protected mode | ||||
|  * with normal virtual addresses.  %esp is adjusted if necessary to a | ||||
|  * virtual address.  All other registers and flags are preserved. | ||||
|  * virtual address.  All other registers are preserved. | ||||
|  * | ||||
|  * The return address for this function should be a 32-bit virtual | ||||
|  * address. | ||||
|  | @ -616,8 +612,7 @@ prot_to_phys: | |||
| 	.code32 | ||||
| 	.globl intr_to_prot
 | ||||
| intr_to_prot: | ||||
| 	/* Preserve registers and flags */ | ||||
| 	pushfl | ||||
| 	/* Preserve registers */ | ||||
| 	pushl	%eax | ||||
| 
 | ||||
| 	/* Check whether stack segment is physical or virtual */ | ||||
|  | @ -636,9 +631,8 @@ intr_to_prot: | |||
| 	movw	%ax, %ss | ||||
| 	subl	VIRTUAL(virt_offset), %esp | ||||
| 1: | ||||
| 	/* Restore registers and flags, and return */ | ||||
| 	/* Restore registers and return */ | ||||
| 	popl	%eax | ||||
| 	popfl | ||||
| 	ret | ||||
| 
 | ||||
| 	/* Expose as _intr_to_virt for use by GDB */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue