mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 9e314996e3
			
		
	
	
		9e314996e3
		
	
	
	
	
		
			
			Noticed the zero-sized function symbol while looking at 'perf' profiles, it causes the profiler to display those addresses in hexa. Turns out that this was wrong/bogus for an eternity. Signed-off-by: Mike Galbraith <efault@gmx.de> Acked-by: Alexander van Heukelum <heukelum@fastmail.fm> Acked-by: Cyrill Gorcunov <gorcunov@gmail.com> LKML-Reference: <1246366820.6538.1.camel@marge.simson.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
		
			
				
	
	
		
			59 lines
		
	
	
		
			970 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			970 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include <linux/linkage.h>
 | |
| #include <asm/dwarf2.h>
 | |
| 
 | |
| /*
 | |
|  * Zero a page. 	
 | |
|  * rdi	page
 | |
|  */			
 | |
| ENTRY(clear_page_c)
 | |
| 	CFI_STARTPROC
 | |
| 	movl $4096/8,%ecx
 | |
| 	xorl %eax,%eax
 | |
| 	rep stosq
 | |
| 	ret
 | |
| 	CFI_ENDPROC
 | |
| ENDPROC(clear_page_c)
 | |
| 
 | |
| ENTRY(clear_page)
 | |
| 	CFI_STARTPROC
 | |
| 	xorl   %eax,%eax
 | |
| 	movl   $4096/64,%ecx
 | |
| 	.p2align 4
 | |
| .Lloop:
 | |
| 	decl	%ecx
 | |
| #define PUT(x) movq %rax,x*8(%rdi)
 | |
| 	movq %rax,(%rdi)
 | |
| 	PUT(1)
 | |
| 	PUT(2)
 | |
| 	PUT(3)
 | |
| 	PUT(4)
 | |
| 	PUT(5)
 | |
| 	PUT(6)
 | |
| 	PUT(7)
 | |
| 	leaq	64(%rdi),%rdi
 | |
| 	jnz	.Lloop
 | |
| 	nop
 | |
| 	ret
 | |
| 	CFI_ENDPROC
 | |
| .Lclear_page_end:
 | |
| ENDPROC(clear_page)
 | |
| 
 | |
| 	/* Some CPUs run faster using the string instructions.
 | |
| 	   It is also a lot simpler. Use this when possible */
 | |
| 
 | |
| #include <asm/cpufeature.h>
 | |
| 
 | |
| 	.section .altinstr_replacement,"ax"
 | |
| 1:	.byte 0xeb					/* jmp <disp8> */
 | |
| 	.byte (clear_page_c - clear_page) - (2f - 1b)	/* offset */
 | |
| 2:
 | |
| 	.previous
 | |
| 	.section .altinstructions,"a"
 | |
| 	.align 8
 | |
| 	.quad clear_page
 | |
| 	.quad 1b
 | |
| 	.byte X86_FEATURE_REP_GOOD
 | |
| 	.byte .Lclear_page_end - clear_page
 | |
| 	.byte 2b - 1b
 | |
| 	.previous
 |