RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
asm.h
Go to the documentation of this file.
1
11/*
12 * NOTE: The spacing in the use of these macros
13 * is critical to them working as advertised.
14 *
15 * This file is based on similar code found in newlib available
16 * from ftp.cygnus.com. The file which was used had no copyright
17 * notice. This file is freely distributable as long as the source
18 * of the file is noted. This file is:
19 *
20 * Copyright (c) 2015 University of York.
21 * Hesham ALMatary <hmka501@york.ac.uk>
22 *
23 *
24 * COPYRIGHT (c) 1994-1997.
25 * On-Line Applications Research Corporation (OAR).
26 *
27 * Redistribution and use in source and binary forms, with or without
28 * modification, are permitted provided that the following conditions
29 * are met:
30 * 1. Redistributions of source code must retain the above copyright
31 * notice, this list of conditions and the following disclaimer.
32 * 2. Redistributions in binary form must reproduce the above copyright
33 * notice, this list of conditions and the following disclaimer in the
34 * documentation and/or other materials provided with the distribution.
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
37 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
39 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
40 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
41 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
42 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
44 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
45 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 */
48
49#ifndef __EPIPHANY_ASM_H
50#define __EPIPHANY_ASM_H
51
52/*
53 * Indicate we are in an assembly file and get the basic CPU definitions.
54 */
55
56#ifndef ASM
57#define ASM
58#endif
59#include <rtems/score/cpuopts.h>
61
62/*
63 * Recent versions of GNU cpp define variables which indicate the
64 * need for underscores and percents. If not using GNU cpp or
65 * the version does not support this, then you will obviously
66 * have to define these as appropriate.
67 */
68
69#ifndef __USER_LABEL_PREFIX__
70#define __USER_LABEL_PREFIX__ _
71#endif
72
73#ifndef __REGISTER_PREFIX__
74#define __REGISTER_PREFIX__
75#endif
76
77/* ANSI concatenation macros. */
78
79#define CONCAT1(a, b) CONCAT2(a, b)
80#define CONCAT2(a, b) a ## b
81
82/* Use the right prefix for global labels. */
83
84#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
85
86/* Use the right prefix for registers. */
87
88#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
89
90/*
91 * define macros for all of the registers on this CPU
92 *
93 * EXAMPLE: #define d0 REG (d0)
94 */
95
96/*
97 * Define macros to handle section beginning and ends.
98 */
99#define BEGIN_CODE_DCL .text
100#define END_CODE_DCL
101#define BEGIN_DATA_DCL .data
102#define END_DATA_DCL
103#define BEGIN_CODE .text
104#define END_CODE
105#define BEGIN_DATA
106#define END_DATA
107#define BEGIN_BSS
108#define END_BSS
109#define END
110
111/*
112 * Following must be tailor for a particular flavor of the C compiler.
113 * They may need to put underscores in front of the symbols.
114 */
115
116#define PUBLIC(sym) .global SYM (sym)
117#define EXTERN(sym) .extern SYM (sym)
118#define TYPE_FUNC(sym) .type SYM (sym), %function
119
120#endif