1/*- 2 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 3 * Copyright (C) 1995, 1996 TooLs GmbH. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. All advertising materials mentioning features or use of this software 15 * must display the following acknowledgement: 16 * This product includes software developed by TooLs GmbH. 17 * 4. The name of TooLs GmbH may not be used to endorse or promote products 18 * derived from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 * $NetBSD: asm.h,v 1.6.18.1 2000/07/25 08:37:14 kleink Exp $
| 1/*- 2 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 3 * Copyright (C) 1995, 1996 TooLs GmbH. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. All advertising materials mentioning features or use of this software 15 * must display the following acknowledgement: 16 * This product includes software developed by TooLs GmbH. 17 * 4. The name of TooLs GmbH may not be used to endorse or promote products 18 * derived from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 * $NetBSD: asm.h,v 1.6.18.1 2000/07/25 08:37:14 kleink Exp $
|
32 * $FreeBSD: head/sys/powerpc/include/asm.h 209975 2010-07-13 05:32:19Z nwhitehorn $
| 32 * $FreeBSD: head/sys/powerpc/include/asm.h 218824 2011-02-18 21:44:53Z nwhitehorn $
|
33 */ 34 35#ifndef _MACHINE_ASM_H_ 36#define _MACHINE_ASM_H_ 37 38#include <sys/cdefs.h> 39
| 33 */ 34 35#ifndef _MACHINE_ASM_H_ 36#define _MACHINE_ASM_H_ 37 38#include <sys/cdefs.h> 39
|
40#ifdef PIC
| 40#if defined(PIC) && !defined(__powerpc64__)
|
41#define PIC_PROLOGUE XXX 42#define PIC_EPILOGUE XXX 43#define PIC_PLT(x) x@plt 44#ifdef __STDC__ 45#define PIC_GOT(x) XXX 46#else /* not __STDC__ */ 47#define PIC_GOT(x) XXX 48#endif /* __STDC__ */ 49#else 50#define PIC_PROLOGUE 51#define PIC_EPILOGUE 52#define PIC_PLT(x) x 53#define PIC_GOT(x) x 54#endif 55
| 41#define PIC_PROLOGUE XXX 42#define PIC_EPILOGUE XXX 43#define PIC_PLT(x) x@plt 44#ifdef __STDC__ 45#define PIC_GOT(x) XXX 46#else /* not __STDC__ */ 47#define PIC_GOT(x) XXX 48#endif /* __STDC__ */ 49#else 50#define PIC_PROLOGUE 51#define PIC_EPILOGUE 52#define PIC_PLT(x) x 53#define PIC_GOT(x) x 54#endif 55
|
56#ifdef __powerpc64__ 57#undef PIC_PLT 58#define PIC_PLT(x) __CONCAT(.,x) 59#endif 60
| |
61#define CNAME(csym) csym 62#define ASMNAME(asmsym) asmsym 63#ifdef __powerpc64__ 64#define HIDENAME(asmsym) __CONCAT(_,asmsym) 65#else 66#define HIDENAME(asmsym) __CONCAT(.,asmsym) 67#endif 68 69#define _GLOBAL(x) \ 70 .data; .align 2; .globl x; x: 71 72#ifdef __powerpc64__ 73#define _ENTRY(x) \ 74 .text; .align 2; .globl x; .section ".opd","aw"; \ 75 .align 3; x: \
| 56#define CNAME(csym) csym 57#define ASMNAME(asmsym) asmsym 58#ifdef __powerpc64__ 59#define HIDENAME(asmsym) __CONCAT(_,asmsym) 60#else 61#define HIDENAME(asmsym) __CONCAT(.,asmsym) 62#endif 63 64#define _GLOBAL(x) \ 65 .data; .align 2; .globl x; x: 66 67#ifdef __powerpc64__ 68#define _ENTRY(x) \ 69 .text; .align 2; .globl x; .section ".opd","aw"; \ 70 .align 3; x: \
|
76 .quad .x,.TOC.@tocbase,0; .previous; \ 77 .align 4; .globl .x; .type .x,@function; .x:
| 71 .quad .L.x,.TOC.@tocbase,0; .size x,24; .previous; \ 72 .align 4; .type x,@function; .L.x:
|
78#else 79#define _ENTRY(x) \ 80 .text; .align 4; .globl x; .type x,@function; x: 81#endif 82 83#if defined(PROF) || (defined(_KERNEL) && defined(GPROF)) 84# define _PROF_PROLOGUE mflr 0; stw 0,4(1); bl _mcount 85#else 86# define _PROF_PROLOGUE 87#endif 88 89#define ENTRY(y) _ENTRY(CNAME(y)); _PROF_PROLOGUE 90#define ASENTRY(y) _ENTRY(ASMNAME(y)); _PROF_PROLOGUE 91#define GLOBAL(y) _GLOBAL(CNAME(y)) 92 93#define ASMSTR .asciz 94 95#define RCSID(x) .text; .asciz x 96 97#undef __FBSDID 98#if !defined(lint) && !defined(STRIP_FBSDID) 99#define __FBSDID(s) .ident s 100#else 101#define __FBSDID(s) /* nothing */ 102#endif /* not lint and not STRIP_FBSDID */ 103 104#define WEAK_ALIAS(alias,sym) \ 105 .weak alias; \ 106 alias = sym 107 108#ifdef __STDC__ 109#define WARN_REFERENCES(_sym,_msg) \ 110 .section .gnu.warning. ## _sym ; .ascii _msg ; .text 111#else 112#define WARN_REFERENCES(_sym,_msg) \ 113 .section .gnu.warning./**/_sym ; .ascii _msg ; .text 114#endif /* __STDC__ */ 115 116#endif /* !_MACHINE_ASM_H_ */
| 73#else 74#define _ENTRY(x) \ 75 .text; .align 4; .globl x; .type x,@function; x: 76#endif 77 78#if defined(PROF) || (defined(_KERNEL) && defined(GPROF)) 79# define _PROF_PROLOGUE mflr 0; stw 0,4(1); bl _mcount 80#else 81# define _PROF_PROLOGUE 82#endif 83 84#define ENTRY(y) _ENTRY(CNAME(y)); _PROF_PROLOGUE 85#define ASENTRY(y) _ENTRY(ASMNAME(y)); _PROF_PROLOGUE 86#define GLOBAL(y) _GLOBAL(CNAME(y)) 87 88#define ASMSTR .asciz 89 90#define RCSID(x) .text; .asciz x 91 92#undef __FBSDID 93#if !defined(lint) && !defined(STRIP_FBSDID) 94#define __FBSDID(s) .ident s 95#else 96#define __FBSDID(s) /* nothing */ 97#endif /* not lint and not STRIP_FBSDID */ 98 99#define WEAK_ALIAS(alias,sym) \ 100 .weak alias; \ 101 alias = sym 102 103#ifdef __STDC__ 104#define WARN_REFERENCES(_sym,_msg) \ 105 .section .gnu.warning. ## _sym ; .ascii _msg ; .text 106#else 107#define WARN_REFERENCES(_sym,_msg) \ 108 .section .gnu.warning./**/_sym ; .ascii _msg ; .text 109#endif /* __STDC__ */ 110 111#endif /* !_MACHINE_ASM_H_ */
|