mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 07:02:06 +00:00 
			
		
		
		
	 276c974ac7
			
		
	
	
		276c974ac7
		
	
	
	
	
		
			
			When compiling uml on x86_64: MODPOST vmlinux.o WARNING: vmlinux.o (.__syscall_stub.2): unexpected non-allocatable section. Did you forget to use "ax"/"aw" in a .S file? Note that for example <linux/init.h> contains section definitions for use in .S files. Because modpost checks for missing SHF_ALLOC section flag. So just add it. Signed-off-by: WANG Cong <amwang@redhat.com> Cc: Jeff Dike <jdike@addtoit.com> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			52 lines
		
	
	
		
			764 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			764 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include "as-layout.h"
 | |
| 
 | |
| 	.globl syscall_stub
 | |
| .section .__syscall_stub, "ax"
 | |
| 
 | |
| 	.globl batch_syscall_stub
 | |
| batch_syscall_stub:
 | |
| 	/* load pointer to first operation */
 | |
| 	mov	$(STUB_DATA+8), %esp
 | |
| 
 | |
| again:
 | |
| 	/* load length of additional data */
 | |
| 	mov	0x0(%esp), %eax
 | |
| 
 | |
| 	/* if(length == 0) : end of list */
 | |
| 	/* write possible 0 to header */
 | |
| 	mov	%eax, STUB_DATA+4
 | |
| 	cmpl	$0, %eax
 | |
| 	jz	done
 | |
| 
 | |
| 	/* save current pointer */
 | |
| 	mov	%esp, STUB_DATA+4
 | |
| 
 | |
| 	/* skip additional data */
 | |
| 	add	%eax, %esp
 | |
| 
 | |
| 	/* load syscall-# */
 | |
| 	pop	%eax
 | |
| 
 | |
| 	/* load syscall params */
 | |
| 	pop	%ebx
 | |
| 	pop	%ecx
 | |
| 	pop	%edx
 | |
| 	pop	%esi
 | |
|  	pop	%edi
 | |
| 	pop	%ebp
 | |
| 
 | |
| 	/* execute syscall */
 | |
| 	int	$0x80
 | |
| 
 | |
| 	/* check return value */
 | |
| 	pop	%ebx
 | |
| 	cmp	%ebx, %eax
 | |
| 	je	again
 | |
| 
 | |
| done:
 | |
| 	/* save return value */
 | |
| 	mov	%eax, STUB_DATA
 | |
| 
 | |
| 	/* stop */
 | |
| 	int3
 |