1/* $NetBSD: vectors.S,v 1.4 2002/08/17 16:36:32 thorpej Exp $ */ 2 3/*- 4 * Copyright (C) 1994-1997 Mark Brinicombe 5 * Copyright (C) 1994 Brini 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by Brini. 19 * 4. The name of Brini may not be used to endorse or promote products 20 * derived from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL BRINI BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 28 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 */ 34 35#include <machine/asm.h> 36__FBSDID("$FreeBSD$"); 37 38/* 39 * These are the exception vectors copied down to page 0. 40 * 41 * Note that FIQs are special; rather than using a level of 42 * indirection, we actually copy the FIQ code down into the 43 * vector page. 44 */ 45 46 .text 47 .align 0 48 .global _C_LABEL(page0), _C_LABEL(page0_data), _C_LABEL(page0_end) 49 .global _C_LABEL(fiqvector) 50 51_C_LABEL(page0): 52 ldr pc, .Lreset_target 53 ldr pc, .Lundefined_target 54 ldr pc, .Lswi_target 55 ldr pc, .Lprefetch_abort_target 56 ldr pc, .Ldata_abort_target 57 ldr pc, .Laddress_exception_target 58 ldr pc, .Lirq_target 59#ifdef __ARM_FIQ_INDIRECT 60 ldr pc, .Lfiq_target 61#else 62.Lfiqvector: 63 .set _C_LABEL(fiqvector), . - _C_LABEL(page0) 64 subs pc, lr, #4 65 .org .Lfiqvector + 0x100 66#endif 67 68_C_LABEL(page0_data): 69.Lreset_target: 70 .word reset_entry 71 72.Lundefined_target: 73 .word undefined_entry 74 75.Lswi_target: 76 .word swi_entry 77 78.Lprefetch_abort_target: 79 .word prefetch_abort_entry 80 81.Ldata_abort_target: 82 .word data_abort_entry 83 84.Laddress_exception_target: 85 .word address_exception_entry 86 87.Lirq_target: 88 .word irq_entry 89 90#ifdef __ARM_FIQ_INDIRECT 91.Lfiq_target: 92 .word _C_LABEL(fiqvector) 93#else 94 .word 0 /* pad it out */ 95#endif 96_C_LABEL(page0_end): 97 98#ifdef __ARM_FIQ_INDIRECT 99 .data 100 .align 0 101_C_LABEL(fiqvector): 102 subs pc, lr, #4 103 .org _C_LABEL(fiqvector) + 0x100 104#endif 105