/[gxemul]/trunk/src/include/armreg.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/src/include/armreg.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 14 - (show annotations)
Mon Oct 8 16:18:51 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 13586 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.982 2005/10/07 22:45:32 debug Exp $
20050816	Some success in decoding the way the SGI O2 PROM draws graphics
		during bootup; lines/rectangles and bitmaps work, enough to
		show the bootlogo etc. :-)
		Adding more PPC instructions, and (dummy) BAT registers.
20050817	Updating the pckbc to support scancode type 3 keyboards
		(required in order to interact with the SGI O2 PROM).
		Adding more PPC instructions.
20050818	Adding more ARM instructions; general register forms.
		Importing armreg.h from NetBSD (ARM cpu ids). Adding a (dummy)
		CATS machine mode (using SA110 as the default CPU).
		Continuing on general dyntrans related stuff.
20050819	Register forms for ARM load/stores. Gaah! The Compaq C Compiler
		bug is triggered for ARM loads as well, not just PPC :-(
		Adding full support for ARM PC-relative load/stores, and load/
		stores where the PC register is the destination register.
		Adding support for ARM a.out binaries.
20050820	Continuing to add more ARM instructions, and correcting some
		bugs. Continuing on CATS emulation.
		More work on the PPC stuff.
20050821	Minor PPC and ARM updates. Adding more machine types.
20050822	All ARM "data processing instructions" are now generated
		automatically.
20050824	Beginning the work on the ARM system control coprocessor.
		Adding support for ARM halfword load/stores, and signed loads.
20050825	Fixing an important bug related to the ARM condition codes.
		OpenBSD/zaurus and NetBSD/netwinder now print some boot
		messages. :)
		Adding a dummy SH (Hitachi SuperH) cpu family.
		Beginning to add some ARM virtual address translation.
		MIPS bugfixes: unaligned PC now cause an ADEL exception (at
		least for non-bintrans execution), and ADEL/ADES (not
		TLBL/TLBS) are used if userland tries to access kernel space.
		(Thanks to Joshua Wise for making me aware of these bugs.)
20050827	More work on the ARM emulation, and various other updates.
20050828	More ARM updates.
		Finally taking the time to work on translation invalidation
		(i.e. invalidating translated code mappings when memory is
		written to). Hopefully this doesn't break anything.
20050829	Moving CPU related files from src/ to a new subdir, src/cpus/.
		Moving PROM emulation stuff from src/ to src/promemul/.
		Better debug instruction trace for ARM loads and stores.
20050830	Various ARM updates (correcting CMP flag calculation, etc).
20050831	PPC instruction updates. (Flag fixes, etc.)
20050901	Various minor PPC and ARM instruction emulation updates.
		Minor OpenFirmware emulation updates.
20050903	Adding support for adding arbitrary ARM coprocessors (with
		the i80321 I/O coprocessor as a first test).
		Various other ARM and PPC updates.
20050904	Adding some SHcompact disassembly routines.
20050907	(Re)adding a dummy HPPA CPU module, and a dummy i960 module.
20050908	Began hacking on some Apple Partition Table support.
20050909	Adding support for loading Mach-O (Darwin PPC) binaries.
20050910	Fixing an ARM bug (Carry flag was incorrectly updated for some
		data processing instructions); OpenBSD/cats and NetBSD/
		netwinder get quite a bit further now.
		Applying a patch to dev_wdc, and a one-liner to dev_pcic, to
		make them work better when emulating new versions of OpenBSD.
		(Thanks to Alexander Yurchenko for the patches.)
		Also doing some other minor updates to dev_wdc. (Some cleanup,
		and finally converting to devinit, etc.)
20050912	IRIX doesn't have u_int64_t by default (noticed by Andreas
		<avr@gnulinux.nl>); configure updated to reflect this.
		Working on ARM register bank switching, CPSR vs SPSR issues,
		and beginning the work on interrupt/exception support.
20050913	Various minor ARM updates (speeding up load/store multiple,
		and fixing a ROR bug in R(); NetBSD/cats now boots as far as
		OpenBSD/cats).
20050917	Adding a dummy Atmel AVR (8-bit) cpu family skeleton.
20050918	Various minor updates.
20050919	Symbols are now loaded from Mach-O executables.
		Continuing the work on adding ARM exception support.
20050920	More work on ARM stuff: OpenBSD/cats and NetBSD/cats reach
		userland! :-)
20050921	Some more progress on ARM interrupt specifics.
20050923	Fixing linesize for VR4121 (patch by Yurchenko). Also fixing
		linesizes/cachesizes for some other VR4xxx.
		Adding a dummy Acer Labs M1543 PCI-ISA bridge (for CATS) and a
		dummy Symphony Labs 83C553 bridge (for Netwinder), usable by 
		dev_footbridge.
20050924	Some PPC progress.
20050925	More PPC progress.
20050926	PPC progress (fixing some bugs etc); Darwin's kernel gets
		slightly further than before.
20050928	Various updates: footbridge/ISA/pciide stuff, and finally
		fixing the VGA text scroll-by-changing-the-base-offset bug.
20050930	Adding a dummy S3 ViRGE pci card for CATS emulation, which
		both NetBSD and OpenBSD detects as VGA.
		Continuing on Footbridge (timers, ISA interrupt stuff).
20051001	Continuing... there are still bugs, probably interrupt-
		related.
20051002	More work on the Footbridge (interrupt stuff).
20051003	Various minor updates. (Trying to find the bug(s).)
20051004	Continuing on the ARM stuff.
20051005	More ARM-related fixes.
20051007	FINALLY! Found and fixed 2 ARM bugs: 1 memory related, and the
		other was because of an error in the ARM manual (load multiple
		with the S-bit set should _NOT_ load usermode registers, as the
		manual says, but it should load saved registers, which may or
		may not happen to be usermode registers).
		NetBSD/cats and OpenBSD/cats seem to install fine now :-)
		except for a minor bug at the end of the OpenBSD/cats install.
		Updating the documentation, preparing for the next release.
20051008	Continuing with release testing and cleanup.

1 /* GXemul: $Id: armreg.h,v 1.1 2005/08/18 11:52:42 debug Exp $ */
2 /* $NetBSD: armreg.h,v 1.33 2005/07/20 14:38:11 nonaka Exp $ */
3
4 /*
5 * Copyright (c) 1998, 2001 Ben Harris
6 * Copyright (c) 1994-1996 Mark Brinicombe.
7 * Copyright (c) 1994 Brini.
8 * All rights reserved.
9 *
10 * This code is derived from software written for Brini by Mark Brinicombe
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
20 * 3. All advertising materials mentioning features or use of this software
21 * must display the following acknowledgement:
22 * This product includes software developed by Brini.
23 * 4. The name of the company nor the name of the author may be used to
24 * endorse or promote products derived from this software without specific
25 * prior written permission.
26 *
27 * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
28 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
29 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
30 * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
31 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 */
39
40 #ifndef _ARM_ARMREG_H
41 #define _ARM_ARMREG_H
42
43 /*
44 * ARM Process Status Register
45 *
46 * The picture in the ARM manuals looks like this:
47 * 3 3 2 2 2 2
48 * 1 0 9 8 7 6 8 7 6 5 4 0
49 * +-+-+-+-+-+-------------------------------------+-+-+-+---------+
50 * |N|Z|C|V|Q| reserved |I|F|T|M M M M M|
51 * | | | | | | | | | |4 3 2 1 0|
52 * +-+-+-+-+-+-------------------------------------+-+-+-+---------+
53 */
54
55 #define PSR_FLAGS 0xf0000000 /* flags */
56 #define PSR_N_bit (1 << 31) /* negative */
57 #define PSR_Z_bit (1 << 30) /* zero */
58 #define PSR_C_bit (1 << 29) /* carry */
59 #define PSR_V_bit (1 << 28) /* overflow */
60
61 #define PSR_Q_bit (1 << 27) /* saturation */
62
63 #define I32_bit (1 << 7) /* IRQ disable */
64 #define F32_bit (1 << 6) /* FIQ disable */
65
66 #define PSR_T_bit (1 << 5) /* Thumb state */
67 #define PSR_J_bit (1 << 24) /* Java mode */
68
69 #define PSR_MODE 0x0000001f /* mode mask */
70 #define PSR_USR26_MODE 0x00000000
71 #define PSR_FIQ26_MODE 0x00000001
72 #define PSR_IRQ26_MODE 0x00000002
73 #define PSR_SVC26_MODE 0x00000003
74 #define PSR_USR32_MODE 0x00000010
75 #define PSR_FIQ32_MODE 0x00000011
76 #define PSR_IRQ32_MODE 0x00000012
77 #define PSR_SVC32_MODE 0x00000013
78 #define PSR_ABT32_MODE 0x00000017
79 #define PSR_UND32_MODE 0x0000001b
80 #define PSR_SYS32_MODE 0x0000001f
81 #define PSR_32_MODE 0x00000010
82
83 #define PSR_IN_USR_MODE(psr) (!((psr) & 3)) /* XXX */
84 #define PSR_IN_32_MODE(psr) ((psr) & PSR_32_MODE)
85
86 /* In 26-bit modes, the PSR is stuffed into R15 along with the PC. */
87
88 #define R15_MODE 0x00000003
89 #define R15_MODE_USR 0x00000000
90 #define R15_MODE_FIQ 0x00000001
91 #define R15_MODE_IRQ 0x00000002
92 #define R15_MODE_SVC 0x00000003
93
94 #define R15_PC 0x03fffffc
95
96 #define R15_FIQ_DISABLE 0x04000000
97 #define R15_IRQ_DISABLE 0x08000000
98
99 #define R15_FLAGS 0xf0000000
100 #define R15_FLAG_N 0x80000000
101 #define R15_FLAG_Z 0x40000000
102 #define R15_FLAG_C 0x20000000
103 #define R15_FLAG_V 0x10000000
104
105 /*
106 * Co-processor 15: The system control co-processor.
107 */
108
109 #define ARM_CP15_CPU_ID 0
110
111 /*
112 * The CPU ID register is theoretically structured, but the definitions of
113 * the fields keep changing.
114 */
115
116 /* The high-order byte is always the implementor */
117 #define CPU_ID_IMPLEMENTOR_MASK 0xff000000
118 #define CPU_ID_ARM_LTD 0x41000000 /* 'A' */
119 #define CPU_ID_DEC 0x44000000 /* 'D' */
120 #define CPU_ID_INTEL 0x69000000 /* 'i' */
121 #define CPU_ID_TI 0x54000000 /* 'T' */
122
123 /* How to decide what format the CPUID is in. */
124 #define CPU_ID_ISOLD(x) (((x) & 0x0000f000) == 0x00000000)
125 #define CPU_ID_IS7(x) (((x) & 0x0000f000) == 0x00007000)
126 #define CPU_ID_ISNEW(x) (!CPU_ID_ISOLD(x) && !CPU_ID_IS7(x))
127
128 /* On ARM3 and ARM6, this byte holds the foundry ID. */
129 #define CPU_ID_FOUNDRY_MASK 0x00ff0000
130 #define CPU_ID_FOUNDRY_VLSI 0x00560000
131
132 /* On ARM7 it holds the architecture and variant (sub-model) */
133 #define CPU_ID_7ARCH_MASK 0x00800000
134 #define CPU_ID_7ARCH_V3 0x00000000
135 #define CPU_ID_7ARCH_V4T 0x00800000
136 #define CPU_ID_7VARIANT_MASK 0x007f0000
137
138 /* On more recent ARMs, it does the same, but in a different format */
139 #define CPU_ID_ARCH_MASK 0x000f0000
140 #define CPU_ID_ARCH_V3 0x00000000
141 #define CPU_ID_ARCH_V4 0x00010000
142 #define CPU_ID_ARCH_V4T 0x00020000
143 #define CPU_ID_ARCH_V5 0x00030000
144 #define CPU_ID_ARCH_V5T 0x00040000
145 #define CPU_ID_ARCH_V5TE 0x00050000
146 #define CPU_ID_ARCH_V5TEJ 0x00060000
147 #define CPU_ID_ARCH_V6 0x00070000
148 #define CPU_ID_VARIANT_MASK 0x00f00000
149
150 /* Next three nybbles are part number */
151 #define CPU_ID_PARTNO_MASK 0x0000fff0
152
153 /* Intel XScale has sub fields in part number */
154 #define CPU_ID_XSCALE_COREGEN_MASK 0x0000e000 /* core generation */
155 #define CPU_ID_XSCALE_COREREV_MASK 0x00001c00 /* core revision */
156 #define CPU_ID_XSCALE_PRODUCT_MASK 0x000003f0 /* product number */
157
158 /* And finally, the revision number. */
159 #define CPU_ID_REVISION_MASK 0x0000000f
160
161 /* Individual CPUs are probably best IDed by everything but the revision. */
162 #define CPU_ID_CPU_MASK 0xfffffff0
163
164 /* Fake CPU IDs for ARMs without CP15 */
165 #define CPU_ID_ARM2 0x41560200
166 #define CPU_ID_ARM250 0x41560250
167
168 /* Pre-ARM7 CPUs -- [15:12] == 0 */
169 #define CPU_ID_ARM3 0x41560300
170 #define CPU_ID_ARM600 0x41560600
171 #define CPU_ID_ARM610 0x41560610
172 #define CPU_ID_ARM620 0x41560620
173
174 /* ARM7 CPUs -- [15:12] == 7 */
175 #define CPU_ID_ARM700 0x41007000 /* XXX This is a guess. */
176 #define CPU_ID_ARM710 0x41007100
177 #define CPU_ID_ARM7500 0x41027100 /* XXX This is a guess. */
178 #define CPU_ID_ARM710A 0x41047100 /* inc ARM7100 */
179 #define CPU_ID_ARM7500FE 0x41077100
180 #define CPU_ID_ARM710T 0x41807100
181 #define CPU_ID_ARM720T 0x41807200
182 #define CPU_ID_ARM740T8K 0x41807400 /* XXX no MMU, 8KB cache */
183 #define CPU_ID_ARM740T4K 0x41817400 /* XXX no MMU, 4KB cache */
184
185 /* Post-ARM7 CPUs */
186 #define CPU_ID_ARM810 0x41018100
187 #define CPU_ID_ARM920T 0x41129200
188 #define CPU_ID_ARM922T 0x41029220
189 #define CPU_ID_ARM940T 0x41029400 /* XXX no MMU */
190 #define CPU_ID_ARM946ES 0x41049460 /* XXX no MMU */
191 #define CPU_ID_ARM966ES 0x41049660 /* XXX no MMU */
192 #define CPU_ID_ARM966ESR1 0x41059660 /* XXX no MMU */
193 #define CPU_ID_ARM1020E 0x4115a200 /* (AKA arm10 rev 1) */
194 #define CPU_ID_ARM1022ES 0x4105a220
195 #define CPU_ID_ARM1026EJS 0x4106a260
196 #define CPU_ID_ARM1136JS 0x4107b360
197 #define CPU_ID_ARM1136JSR1 0x4117b360
198 #define CPU_ID_SA110 0x4401a100
199 #define CPU_ID_SA1100 0x4401a110
200 #define CPU_ID_TI925T 0x54029250
201 #define CPU_ID_SA1110 0x6901b110
202 #define CPU_ID_IXP1200 0x6901c120
203 #define CPU_ID_80200 0x69052000
204 #define CPU_ID_PXA250 0x69052100 /* sans core revision */
205 #define CPU_ID_PXA210 0x69052120
206 #define CPU_ID_PXA250A 0x69052100 /* 1st version Core */
207 #define CPU_ID_PXA210A 0x69052120 /* 1st version Core */
208 #define CPU_ID_PXA250B 0x69052900 /* 3rd version Core */
209 #define CPU_ID_PXA210B 0x69052920 /* 3rd version Core */
210 #define CPU_ID_PXA250C 0x69052d00 /* 4th version Core */
211 #define CPU_ID_PXA210C 0x69052d20 /* 4th version Core */
212 #define CPU_ID_PXA27X 0x69054110
213 #define CPU_ID_80321_400 0x69052420
214 #define CPU_ID_80321_600 0x69052430
215 #define CPU_ID_80321_400_B0 0x69052c20
216 #define CPU_ID_80321_600_B0 0x69052c30
217 #define CPU_ID_80219_400 0x69052e20
218 #define CPU_ID_80219_600 0x69052e30
219 #define CPU_ID_IXP425_533 0x690541c0
220 #define CPU_ID_IXP425_400 0x690541d0
221 #define CPU_ID_IXP425_266 0x690541f0
222
223 /* ARM3-specific coprocessor 15 registers */
224 #define ARM3_CP15_FLUSH 1
225 #define ARM3_CP15_CONTROL 2
226 #define ARM3_CP15_CACHEABLE 3
227 #define ARM3_CP15_UPDATEABLE 4
228 #define ARM3_CP15_DISRUPTIVE 5
229
230 /* ARM3 Control register bits */
231 #define ARM3_CTL_CACHE_ON 0x00000001
232 #define ARM3_CTL_SHARED 0x00000002
233 #define ARM3_CTL_MONITOR 0x00000004
234
235 /*
236 * Post-ARM3 CP15 registers:
237 *
238 * 1 Control register
239 *
240 * 2 Translation Table Base
241 *
242 * 3 Domain Access Control
243 *
244 * 4 Reserved
245 *
246 * 5 Fault Status
247 *
248 * 6 Fault Address
249 *
250 * 7 Cache/write-buffer Control
251 *
252 * 8 TLB Control
253 *
254 * 9 Cache Lockdown
255 *
256 * 10 TLB Lockdown
257 *
258 * 11 Reserved
259 *
260 * 12 Reserved
261 *
262 * 13 Process ID (for FCSE)
263 *
264 * 14 Reserved
265 *
266 * 15 Implementation Dependent
267 */
268
269 /* Some of the definitions below need cleaning up for V3/V4 architectures */
270
271 /* CPU control register (CP15 register 1) */
272 #define CPU_CONTROL_MMU_ENABLE 0x00000001 /* M: MMU/Protection unit enable */
273 #define CPU_CONTROL_AFLT_ENABLE 0x00000002 /* A: Alignment fault enable */
274 #define CPU_CONTROL_DC_ENABLE 0x00000004 /* C: IDC/DC enable */
275 #define CPU_CONTROL_WBUF_ENABLE 0x00000008 /* W: Write buffer enable */
276 #define CPU_CONTROL_32BP_ENABLE 0x00000010 /* P: 32-bit exception handlers */
277 #define CPU_CONTROL_32BD_ENABLE 0x00000020 /* D: 32-bit addressing */
278 #define CPU_CONTROL_LABT_ENABLE 0x00000040 /* L: Late abort enable */
279 #define CPU_CONTROL_BEND_ENABLE 0x00000080 /* B: Big-endian mode */
280 #define CPU_CONTROL_SYST_ENABLE 0x00000100 /* S: System protection bit */
281 #define CPU_CONTROL_ROM_ENABLE 0x00000200 /* R: ROM protection bit */
282 #define CPU_CONTROL_CPCLK 0x00000400 /* F: Implementation defined */
283 #define CPU_CONTROL_BPRD_ENABLE 0x00000800 /* Z: Branch prediction enable */
284 #define CPU_CONTROL_IC_ENABLE 0x00001000 /* I: IC enable */
285 #define CPU_CONTROL_VECRELOC 0x00002000 /* V: Vector relocation */
286 #define CPU_CONTROL_ROUNDROBIN 0x00004000 /* RR: Predictable replacement */
287 #define CPU_CONTROL_V4COMPAT 0x00008000 /* L4: ARMv4 compat LDR R15 etc */
288
289 #define CPU_CONTROL_IDC_ENABLE CPU_CONTROL_DC_ENABLE
290
291 /* XScale Auxillary Control Register (CP15 register 1, opcode2 1) */
292 #define XSCALE_AUXCTL_K 0x00000001 /* dis. write buffer coalescing */
293 #define XSCALE_AUXCTL_P 0x00000002 /* ECC protect page table access */
294 #define XSCALE_AUXCTL_MD_WB_RA 0x00000000 /* mini-D$ wb, read-allocate */
295 #define XSCALE_AUXCTL_MD_WB_RWA 0x00000010 /* mini-D$ wb, read/write-allocate */
296 #define XSCALE_AUXCTL_MD_WT 0x00000020 /* mini-D$ wt, read-allocate */
297 #define XSCALE_AUXCTL_MD_MASK 0x00000030
298
299 /* Cache type register definitions */
300 #define CPU_CT_ISIZE(x) ((x) & 0xfff) /* I$ info */
301 #define CPU_CT_DSIZE(x) (((x) >> 12) & 0xfff) /* D$ info */
302 #define CPU_CT_S (1U << 24) /* split cache */
303 #define CPU_CT_CTYPE(x) (((x) >> 25) & 0xf) /* cache type */
304
305 #define CPU_CT_CTYPE_WT 0 /* write-through */
306 #define CPU_CT_CTYPE_WB1 1 /* write-back, clean w/ read */
307 #define CPU_CT_CTYPE_WB2 2 /* w/b, clean w/ cp15,7 */
308 #define CPU_CT_CTYPE_WB6 6 /* w/b, cp15,7, lockdown fmt A */
309 #define CPU_CT_CTYPE_WB7 7 /* w/b, cp15,7, lockdown fmt B */
310
311 #define CPU_CT_xSIZE_LEN(x) ((x) & 0x3) /* line size */
312 #define CPU_CT_xSIZE_M (1U << 2) /* multiplier */
313 #define CPU_CT_xSIZE_ASSOC(x) (((x) >> 3) & 0x7) /* associativity */
314 #define CPU_CT_xSIZE_SIZE(x) (((x) >> 6) & 0x7) /* size */
315
316 /* Fault status register definitions */
317
318 #define FAULT_TYPE_MASK 0x0f
319 #define FAULT_USER 0x10
320
321 #define FAULT_WRTBUF_0 0x00 /* Vector Exception */
322 #define FAULT_WRTBUF_1 0x02 /* Terminal Exception */
323 #define FAULT_BUSERR_0 0x04 /* External Abort on Linefetch -- Section */
324 #define FAULT_BUSERR_1 0x06 /* External Abort on Linefetch -- Page */
325 #define FAULT_BUSERR_2 0x08 /* External Abort on Non-linefetch -- Section */
326 #define FAULT_BUSERR_3 0x0a /* External Abort on Non-linefetch -- Page */
327 #define FAULT_BUSTRNL1 0x0c /* External abort on Translation -- Level 1 */
328 #define FAULT_BUSTRNL2 0x0e /* External abort on Translation -- Level 2 */
329 #define FAULT_ALIGN_0 0x01 /* Alignment */
330 #define FAULT_ALIGN_1 0x03 /* Alignment */
331 #define FAULT_TRANS_S 0x05 /* Translation -- Section */
332 #define FAULT_TRANS_P 0x07 /* Translation -- Page */
333 #define FAULT_DOMAIN_S 0x09 /* Domain -- Section */
334 #define FAULT_DOMAIN_P 0x0b /* Domain -- Page */
335 #define FAULT_PERM_S 0x0d /* Permission -- Section */
336 #define FAULT_PERM_P 0x0f /* Permission -- Page */
337
338 #define FAULT_IMPRECISE 0x400 /* Imprecise exception (XSCALE) */
339
340 /*
341 * Address of the vector page, low and high versions.
342 */
343 #define ARM_VECTORS_LOW 0x00000000U
344 #define ARM_VECTORS_HIGH 0xffff0000U
345
346 /*
347 * ARM Instructions
348 *
349 * 3 3 2 2 2
350 * 1 0 9 8 7 0
351 * +-------+-------------------------------------------------------+
352 * | cond | instruction dependant |
353 * |c c c c| |
354 * +-------+-------------------------------------------------------+
355 */
356
357 #define INSN_SIZE 4 /* Always 4 bytes */
358 #define INSN_COND_MASK 0xf0000000 /* Condition mask */
359 #define INSN_COND_AL 0xe0000000 /* Always condition */
360
361 #define THUMB_INSN_SIZE 2 /* Some are 4 bytes. */
362
363 #endif

  ViewVC Help
Powered by ViewVC 1.1.26