Deleted Added
full compact
asm.h (209975) asm.h (218824)
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_ */