浏览代码

Use system provided header for osx asm.h

Viral B. Shah 9 年之前
父节点
当前提交
35199afcf0
共有 2 个文件被更改,包括 1 次插入409 次删除
  1. 1 1
      amd64/bsd_asm.h
  2. 0 408
      i387/osx_asm.h

+ 1 - 1
amd64/bsd_asm.h

@@ -38,7 +38,7 @@
 
 
 #ifdef __APPLE__
-#include "../i387/osx_asm.h"
+#include <mach/machine/asm.h>
 #define CNAME(x) EXT(x)
 
 #else

+ 0 - 408
i387/osx_asm.h

@@ -1,408 +0,0 @@
-/*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. The rights granted to you under the License
- * may not be used to create, or enable the creation or redistribution of,
- * unlawful or unlicensed copies of an Apple operating system, or to
- * circumvent, violate, or enable the circumvention or violation of, any
- * terms of an Apple operating system software license agreement.
- *
- * Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
- */
-/*
- * @OSF_COPYRIGHT@
- */
-/*
- * Mach Operating System
- * Copyright (c) 1991,1990,1989 Carnegie Mellon University
- * All Rights Reserved.
- *
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-
-#ifndef	_I386_ASM_H_
-#define	_I386_ASM_H_
-
-#ifdef _KERNEL
-#include <gprof.h>
-#endif	/* _KERNEL */
-
-#ifdef MACH_KERNEL
-#include <mach_kdb.h>
-#else	/* !MACH_KERNEL */
-#define	MACH_KDB 0
-#endif	/* !MACH_KERNEL */
-
-
-#if	defined(MACH_KERNEL) || defined(_KERNEL)
-#include <gprof.h>
-#endif	/* MACH_KERNEL || _KERNEL */
-
-#if defined(__i386__)
-
-#define S_PC	 (%esp)
-#define S_ARG0	 4(%esp)
-#define S_ARG1	 8(%esp)
-#define S_ARG2	12(%esp)
-#define S_ARG3	16(%esp)
-#define S_ARG4	20(%esp)
-
-#define FRAME	pushl %ebp; movl %esp, %ebp
-#define EMARF	leave
-
-#define B_LINK	 (%ebp)
-#define B_PC	 4(%ebp)
-#define B_ARG0	 8(%ebp)
-#define B_ARG1	12(%ebp)
-#define B_ARG2	16(%ebp)
-#define B_ARG3	20(%ebp)
-
-#elif defined(__x86_64__)
-
-#define S_PC	 (%rsp)
-
-#define FRAME	pushq %rbp; movq %rsp, %rbp
-#define EMARF	leave
-
-#define B_LINK	 (%rbp)
-#define B_PC	 8(%rbp)
-
-#else
-#error unsupported architecture
-#endif
-
-/* There is another definition of ALIGN for .c sources */
-#ifdef ASSEMBLER
-#define ALIGN 4,0x90
-#endif /* ASSEMBLER */
-
-#ifndef FALIGN
-#define FALIGN ALIGN
-#endif
-
-#define LB(x,n) n
-#if	__STDC__
-#ifndef __NO_UNDERSCORES__
-#define	LCL(x)	L ## x
-#define EXT(x) _ ## x
-#define LEXT(x) _ ## x ## :
-#else
-#define	LCL(x)	.L ## x
-#define EXT(x) x
-#define LEXT(x) x ## :
-#endif
-#define LBc(x,n) n ## :
-#define LBb(x,n) n ## b
-#define LBf(x,n) n ## f
-#else /* __STDC__ */
-#ifndef __NO_UNDERSCORES__
-#define LCL(x) L/**/x
-#define EXT(x) _/**/x
-#define LEXT(x) _/**/x/**/:
-#else /* __NO_UNDERSCORES__ */
-#define	LCL(x)	.L/**/x
-#define EXT(x) x
-#define LEXT(x) x/**/:
-#endif /* __NO_UNDERSCORES__ */
-#define LBc(x,n) n/**/:
-#define LBb(x,n) n/**/b
-#define LBf(x,n) n/**/f
-#endif /* __STDC__ */
-
-#define SVC .byte 0x9a; .long 0; .word 0x7
-
-#define RPC_SVC .byte 0x9a; .long 0; .word 0xf
-
-#define String	.asciz
-#define Value	.word
-#define Times(a,b) (a*b)
-#define Divide(a,b) (a/b)
-
-#define INB	inb	%dx, %al
-#define OUTB	outb	%al, %dx
-#define INL	inl	%dx, %eax
-#define OUTL	outl	%eax, %dx
-
-#define data16	.byte 0x66
-#define addr16	.byte 0x67
-
-#if !GPROF
-#define MCOUNT
-
-#elif defined(__SHARED__)
-#define MCOUNT		; .data;\
-            .align ALIGN;\
-            LBc(x, 8) .long 0;\
-            .text;\
-            Gpush;\
-            Gload;\
-            leal Gotoff(LBb(x,8)),%edx;\
-            Egaddr(%eax,_mcount_ptr);\
-            Gpop;\
-            call *(%eax);
-
-#else	/* !GPROF, !__SHARED__ */
-#define MCOUNT		; call mcount;
-#endif /* GPROF */
-
-#ifdef __ELF__
-#define ELF_FUNC(x)	.type x,@function
-#define ELF_DATA(x)	.type x,@object
-#define ELF_SIZE(x,s)	.size x,s
-#else
-#define ELF_FUNC(x)
-#define ELF_DATA(x)
-#define ELF_SIZE(x,s)
-#endif
-
-#define	Entry(x)	.globl EXT(x); ELF_FUNC(EXT(x)); .align FALIGN; LEXT(x)
-#define	ENTRY(x)	Entry(x) MCOUNT
-#define	ENTRY2(x,y)	.globl EXT(x); .globl EXT(y); \
-            ELF_FUNC(EXT(x)); ELF_FUNC(EXT(y)); \
-            .align FALIGN; LEXT(x); LEXT(y) \
-            MCOUNT
-#if __STDC__
-#define	ASENTRY(x) 	.globl x; .align FALIGN; x ## : ELF_FUNC(x) MCOUNT
-#else
-#define	ASENTRY(x) 	.globl x; .align FALIGN; x: ELF_FUNC(x) MCOUNT
-#endif /* __STDC__ */
-
-#define	DATA(x)		.globl EXT(x); ELF_DATA(EXT(x)); .align ALIGN; LEXT(x)
-
-#define End(x)		ELF_SIZE(x,.-x)
-#define END(x)		End(EXT(x))
-#define ENDDATA(x)	END(x)
-#define Enddata(x)	End(x)
-
-/*
- * ELF shared library accessor macros.
- * Gpush saves the %ebx register used for the GOT address
- * Gpop pops %ebx if we need a GOT
- * Gload loads %ebx with the GOT address if shared libraries are used
- * Gcall calls an external function.
- * Gotoff allows you to reference local labels.
- * Gotoff2 allows you to reference local labels with an index reg.
- * Gotoff3 allows you to reference local labels with an index reg & size.
- * Gaddr loads up a register with an address of an external item.
- * Gstack is the number of bytes that Gpush pushes on the stack.
- *
- * Varients of the above with E or L prefixes do EXT(name) or LCL(name)
- * respectively.
- */
-
-#ifndef __SHARED__
-#define Gpush
-#define Gpop
-#define Gload
-#define Gcall(func)		call func
-#define Gotoff(lab)		lab
-#define Gotoff2(l,r)		l(r)
-#define Gotoff3(l,r,s)		l(,r,s)
-#define Gaddr(to,lab)		movl $lab,to
-#define Gcmp(lab,reg)		cmpl $lab,reg
-#define Gmemload(lab,reg)	movl lab,reg
-#define Gmemstore(reg,lab,tmp)	movl reg,lab
-#define Gstack			0
-
-#else
-#ifdef __ELF__			/* ELF shared libraries */
-#define Gpush			pushl %ebx
-#define Gpop			popl %ebx
-#define Gload			call 9f; 9: popl %ebx; addl $_GLOBAL_OFFSET_TABLE_+[.-9b],%ebx
-#define Gcall(func)		call EXT(func)@PLT
-#define Gotoff(lab)		lab@GOTOFF(%ebx)
-#define Gotoff2(l,r)		l@GOTOFF(%ebx,r)
-#define Gotoff3(l,r,s)		l@GOTOFF(%ebx,r,s)
-#define Gaddr(to,lab)		movl lab@GOT(%ebx),to
-#define Gcmp(lab,reg)		cmpl reg,lab@GOT(%ebx)
-#define Gmemload(lab,reg)	movl lab@GOT(%ebx),reg; movl (reg),reg
-#define Gmemstore(reg,lab,tmp)	movl lab@GOT(%ebx),tmp; movl reg,(tmp)
-#define Gstack			4
-
-#else				/* ROSE shared libraries */
-#define Gpush
-#define Gpop
-#define Gload
-#define Gcall(func)		call *9f; .data; .align ALIGN; 9: .long func; .text
-#define Gotoff(lab)		lab
-#define Gotoff2(l,r)		l(r)
-#define Gotoff3(l,r,s)		l(,r,s)
-#define Gaddr(to,lab)		movl 9f,to; .data; .align ALIGN; 9: .long lab; .text
-#define Gcmp(lab,reg)		cmpl reg,9f; .data; .align ALIGN; 9: .long lab; .text
-#define Gmemload(lab,reg)	movl 9f,reg; movl (reg),reg; .data; .align ALIGN; 9: .long lab; .text
-#define Gmemstore(reg,lab,tmp)	movl 9f,tmp; movl reg,(tmp); .data; .align ALIGN; 9: .long lab; .text
-#define Gstack			0
-#endif	/* __ELF__ */
-#endif	/* __SHARED__ */
-
-/* Egotoff is not provided, since external symbols should not use @GOTOFF
-   relocations.  */
-#define Egcall(func)		Gcall(EXT(func))
-#define Egaddr(to,lab)		Gaddr(to,EXT(lab))
-#define Egcmp(lab,reg)		Gcmp(EXT(lab),reg)
-#define Egmemload(lab,reg)	Gmemload(EXT(lab),reg)
-#define Egmemstore(reg,lab,tmp)	Gmemstore(reg,EXT(lab),tmp)
-
-#define Lgotoff(lab)		Gotoff(LCL(lab))
-#define Lgotoff2(l,r)		Gotoff2(LCL(l),r)
-#define Lgotoff3(l,r,s)		Gotoff3(LCL(l),r,s)
-#define Lgcmp(lab,reg)		Gcmp(LCL(lab),reg)
-#define Lgmemload(lab,reg)	movl Lgotoff(lab),reg
-#define Lgmemstore(reg,lab,tmp)	movl reg,Lgotoff(lab)
-
-#ifdef ASSEMBLER
-#if	MACH_KDB
-#include <ddb/stab.h>
-/*
- * This pseudo-assembler line is added so that there will be at least
- *	one N_SO entry in the symbol stable to define the current file name.
- */
-#endif	/* MACH_KDB */
-
-#else /* NOT ASSEMBLER */
-
-/* These defines are here for .c files that wish to reference global symbols
- * within __asm__ statements.
- */
-#ifndef __NO_UNDERSCORES__
-#define CC_SYM_PREFIX "_"
-#else
-#define CC_SYM_PREFIX ""
-#endif /* __NO_UNDERSCORES__ */
-#endif /* ASSEMBLER */
-
-/*
- * The following macros make calls into C code.
- * They dynamically align the stack to 16 bytes.
- */
-#if defined(__i386__)
-/*
- * Arguments are moved (not pushed) onto the correctly aligned stack.
- * NOTE: ESI is destroyed in the process, and hence cannot
- * be directly used as a parameter. Users of this macro must
- * independently preserve ESI (a non-volatile) if the routine is
- * intended to be called from C, for instance.
- */
-
-#define CCALL(fn)			\
-    movl	%esp, %esi		;\
-    andl	$0xFFFFFFF0, %esp	;\
-    call	EXT(fn)			;\
-    movl	%esi, %esp
-
-#define CCALL1(fn, arg1)		\
-    movl	%esp, %esi		;\
-    subl	$4, %esp		;\
-    andl	$0xFFFFFFF0, %esp	;\
-    movl	arg1, (%esp)		;\
-    call	EXT(fn)			;\
-    movl	%esi, %esp
-
-#define CCALL2(fn, arg1, arg2)		\
-    movl	%esp, %esi		;\
-    subl	$8, %esp		;\
-    andl	$0xFFFFFFF0, %esp	;\
-    movl	arg2, 4(%esp)		;\
-    movl	arg1, (%esp)		;\
-    call	EXT(fn)			;\
-    movl	%esi, %esp
-
-/* This variant exists to permit adjustment of the stack by "dtrace" */
-#define CCALL1WITHSP(fn, arg1)		\
-    movl	%esp, %esi		;\
-    subl	$12, %esp		;\
-    andl	$0xFFFFFFF0, %esp	;\
-    movl	%esi, 8(%esp)		;\
-    leal	8(%esp), %esi		;\
-    movl	%esi, 4(%esp)		;\
-    movl	arg1, (%esp)		;\
-    call	EXT(fn)			;\
-    movl	8(%esp), %esp
-
-/*
- * CCALL5 is used for callee functions with 3 arguments but
- * where arg2 (a3:a2) and arg3 (a5:a4) are 64-bit values.
- */
-#define CCALL5(fn, a1, a2, a3, a4, a5)	\
-    movl	%esp, %esi		;\
-    subl	$20, %esp		;\
-    andl	$0xFFFFFFF0, %esp	;\
-    movl	a5, 16(%esp)		;\
-    movl	a4, 12(%esp)		;\
-    movl	a3,  8(%esp)		;\
-    movl	a2,  4(%esp)		;\
-    movl	a1,  (%esp)		;\
-    call	EXT(fn)			;\
-    movl	%esi, %esp
-
-#elif defined(__x86_64__)
-
-/* This variant exists to permit adjustment of the stack by "dtrace" */
-#define CCALLWITHSP(fn)				 \
-    mov	%rsp, %r12			;\
-    sub	$8, %rsp			;\
-    and	$0xFFFFFFFFFFFFFFF0, %rsp	;\
-    mov	%r12, (%rsp)			;\
-    leaq	(%rsp), %rsi			;\
-    call	EXT(fn)				;\
-    mov	(%rsp), %rsp
-
-#define CCALL(fn)				 \
-    mov	%rsp, %r12			;\
-    and	$0xFFFFFFFFFFFFFFF0, %rsp	;\
-    call	EXT(fn)				;\
-    mov	%r12, %rsp
-
-#define CCALL1(fn, arg1) 			 \
-    mov	arg1, %rdi 			;\
-    CCALL(fn)
-
-#define CCALL2(fn, arg1, arg2)		 	 \
-    mov	arg1, %rdi 			;\
-    CCALL(fn)
-
-#define CCALL3(fn, arg1, arg2, arg3) 		 \
-    mov	arg1, %rdi 			;\
-    mov	arg2, %rsi 			;\
-    mov	arg3, %rdx 			;\
-    CCALL(fn)
-
-#else
-#error unsupported architecture
-#endif
-
-#endif /* _I386_ASM_H_ */