x86 memcpy: Copy 4 bytes at once
This is a slight improvement over the rep movsb loop Change-Id: Id71d9bfe5330b154a5c62fac85ce3955ae89b057 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: http://review.coreboot.org/1742 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						 Stefan Reinauer
						Stefan Reinauer
					
				
			
			
				
	
			
			
			
						parent
						
							4b1610d766
						
					
				
				
					commit
					31409617a4
				
			| @@ -5,11 +5,13 @@ void *memcpy(void *dest, const void *src, size_t n) | |||||||
| 	unsigned long d0, d1, d2; | 	unsigned long d0, d1, d2; | ||||||
|  |  | ||||||
| 	asm volatile( | 	asm volatile( | ||||||
| 		"rep movsb" | 		"rep ; movsl\n\t" | ||||||
| 		: "=S"(d0), "=D"(d1), "=c"(d2) | 		"movl %4,%%ecx\n\t" | ||||||
| 		: "0"(src), "1"(dest), "2"(n) | 		"rep ; movsb\n\t" | ||||||
|  | 		: "=&c" (d0), "=&D" (d1), "=&S" (d2) | ||||||
|  | 		: "0" (n >> 2), "g" (n & 3), "1" (dest), "2" (src) | ||||||
| 		: "memory" | 		: "memory" | ||||||
| 		); | 	); | ||||||
|  |  | ||||||
| 	return dest; | 	return dest; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user