GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / cfe / cfe / arch / arm / common / include / armmacros.h
blob73fa2d97bcbf0207b6798d0a44d59f06dd3e7561
1 /* *********************************************************************
2 * Broadcom Common Firmware Environment (CFE)
3 *
4 * ARM Macros File: armmacros.h
6 * Macros to deal with various arm-related things.
7 *
8 * Author:
9 *
10 *********************************************************************
12 * Copyright 2000,2001,2002,2003
13 * Broadcom Corporation. All rights reserved.
15 * This software is furnished under license and may be used and
16 * copied only in accordance with the following terms and
17 * conditions. Subject to these conditions, you may download,
18 * copy, install, use, modify and distribute modified or unmodified
19 * copies of this software in source and/or binary form. No title
20 * or ownership is transferred hereby.
22 * 1) Any source code used, modified or distributed must reproduce
23 * and retain this copyright notice and list of conditions
24 * as they appear in the source file.
26 * 2) No right is granted to use any trade name, trademark, or
27 * logo of Broadcom Corporation. The "Broadcom Corporation"
28 * name may not be used to endorse or promote products derived
29 * from this software without the prior written permission of
30 * Broadcom Corporation.
32 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
33 * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
34 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
35 * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
36 * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
37 * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
38 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
39 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
40 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
41 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
42 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
43 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
44 * THE POSSIBILITY OF SUCH DAMAGE.
45 ********************************************************************* */
47 /* *********************************************************************
48 * 32/64-bit macros
49 ********************************************************************* */
51 #ifdef __long64
52 #define _VECT_ .dword
53 #define _LONG_ .dword
54 #define REGSIZE 8
55 #define BPWSIZE 3 /* bits per word size */
56 #define _TBLIDX(x) ((x)*REGSIZE)
57 #else
58 #define _VECT_ .word
59 #define _LONG_ .word
60 #define REGSIZE 4
61 #define BPWSIZE 2
62 #define _TBLIDX(x) ((x)*REGSIZE)
63 #endif
65 #ifndef FUNC
66 #if defined(__thumb__)
67 #define FUNC(x) THUMBLEAF(x)
68 #else
69 #define FUNC(x) LEAF(x)
70 #endif /* __thumb__ */
71 #endif
73 /* Debug macro */
74 #ifdef TRACE
75 #undef TRACE
76 #endif
78 #ifdef BCMDBG
79 #define TRACE(x) \
80 ldr r9,=(x); \
81 ldr r10,=SI_ENUM_BASE; \
82 str r9,[r10,#0x64]
84 #define TRACE1(x) \
85 mov r9,x; \
86 ldr r10,=SI_ENUM_BASE; \
87 str r9,[r10,#0x68]
89 #define TRACE2(x) \
90 mov r9,x; \
91 ldr r10,=SI_ENUM_BASE; \
92 str r9,[r10,#0x64]
93 #else
94 #define TRACE(x)
95 #define TRACE1(x)
96 #define TRACE2(x)
97 #endif
100 /* *********************************************************************
101 * LOADREL(reg,label)
103 * Load the address of a label, but do it in a position-independent
104 * way.
106 * Input parameters:
107 * reg - register to load
108 * label - label whose address to load
110 * Return value:
111 * ra is trashed!
112 ********************************************************************* */
114 #if CFG_EMBEDDED_PIC
115 #define LOADREL(reg,label) \
116 .set noreorder ; \
117 bal 1f ; \
118 nop ; \
119 1: nop ; \
120 .set reorder ; \
121 la reg,label-1b ; \
122 addu reg,ra
123 #else
124 #define LOADREL(reg,label) \
125 bl 1f; \
126 1: nop; \
127 ldr reg,=1b; \
128 sub lr,lr,reg; \
129 ldr reg,label; \
130 add reg,reg,lr;
131 #endif