mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-10-31 17:14:00 +00:00 
			
		
		
		
	 d99a015343
			
		
	
	
		d99a015343
		
	
	
	
	
		
			
			Authored by: Chris Williamson <chris.williamson@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: John Kennedy <john.kennedy@delphix.com> Reviewed by: Dan Kimmel <dan.kimmel@delphix.com> Approved by: Garrett D'Amore <garrett@damore.org> Ported-by: Don Brady <don.brady@delphix.com> Ported-by: John Kennedy <john.kennedy@delphix.com> OpenZFS-issue: https://www.illumos.org/issues/7431 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/dfc11533 Porting Notes: * The CLI long option arguments for '-t' and '-m' don't parse on linux * Switched from kmem_alloc to vmem_alloc in zcp_lua_alloc * Lua implementation is built as its own module (zlua.ko) * Lua headers consumed directly by zfs code moved to 'include/sys/lua/' * There is no native setjmp/longjump available in stock Linux kernel. Brought over implementations from illumos and FreeBSD * The get_temporary_prop() was adapted due to VFS platform differences * Use of inline functions in lua parser to reduce stack usage per C call * Skip some ZFS Test Suite ZCP tests on sparc64 to avoid stack overflow
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * CDDL HEADER START
 | |
|  *
 | |
|  * The contents of this file are subject to the terms of the
 | |
|  * Common Development and Distribution License (the "License").
 | |
|  * You may not use this file except in compliance with the License.
 | |
|  *
 | |
|  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 | |
|  * or http://www.opensolaris.org/os/licensing.
 | |
|  * See the License for the specific language governing permissions
 | |
|  * and limitations under the License.
 | |
|  *
 | |
|  * When distributing Covered Code, include this CDDL HEADER in each
 | |
|  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 | |
|  * If applicable, add the following below this CDDL HEADER, with the
 | |
|  * fields enclosed by brackets "[]" replaced with your own identifying
 | |
|  * information: Portions Copyright [yyyy] [name of copyright owner]
 | |
|  *
 | |
|  * CDDL HEADER END
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
 | |
|  */
 | |
| 
 | |
| #define	ENTRY(x) \
 | |
| 	.text; \
 | |
| 	.align	8; \
 | |
| 	.globl	x; \
 | |
| 	.type	x, @function; \
 | |
| x:
 | |
| 
 | |
| #define	SET_SIZE(x) \
 | |
| 	.size	x, [.-x]
 | |
| 
 | |
| /*
 | |
|  * Setjmp and longjmp implement non-local gotos using state vectors
 | |
|  * type label_t.
 | |
|  */
 | |
| #ifdef __i386__
 | |
| 
 | |
| 	ENTRY(setjmp)			/* save area is passed in eax */
 | |
| 	movl	%ebp, 0(%eax)		/* save ebp */
 | |
| 	movl	%ebx, 4(%eax)		/* save ebx */
 | |
| 	movl	%esi, 8(%eax)		/* save esi */
 | |
| 	movl	%edi, 12(%eax)		/* save edi */
 | |
| 	movl	%esp, 16(%eax)		/* save esp */
 | |
| 	movl	(%esp), %ecx		/* %eip (return address) */
 | |
| 	movl	%ecx, 20(%eax)		/* save eip */
 | |
| 	subl	%eax, %eax		/* return 0 */
 | |
| 	ret
 | |
| 	SET_SIZE(setjmp)
 | |
| 
 | |
| 	ENTRY(longjmp)			/* save area is passed in eax */
 | |
| 	movl	0(%eax), %ebp		/* restore ebp */
 | |
| 	movl	4(%eax), %ebx		/* restore ebx */
 | |
| 	movl	8(%eax), %esi		/* restore esi */
 | |
| 	movl	12(%eax), %edi		/* restore edi */
 | |
| 	movl	16(%eax), %esp		/* restore esp */
 | |
| 	movl	20(%eax), %ecx		/* %eip (return address) */
 | |
| 	addl	$4, %esp		/* pop ret adr */
 | |
| 	jmp	*%ecx			/* indirect jump */
 | |
| 	SET_SIZE(longjmp)
 | |
| 
 | |
| #ifdef __ELF__
 | |
| .section .note.GNU-stack,"",%progbits
 | |
| #endif
 | |
| 
 | |
| #endif /* __i386__ */
 |