Annotation of sys/arch/sh/include/trap.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: trap.h,v 1.2 2007/02/06 23:14:09 miod Exp $ */
! 2: /* $NetBSD: exception.h,v 1.9 2006/07/22 21:58:29 uwe Exp $ */
! 3:
! 4: /*-
! 5: * Copyright (c) 2002 The NetBSD Foundation, Inc.
! 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 the NetBSD
! 19: * Foundation, Inc. and its contributors.
! 20: * 4. Neither the name of The NetBSD Foundation nor the names of its
! 21: * contributors may be used to endorse or promote products derived
! 22: * from this software without specific prior written permission.
! 23: *
! 24: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
! 25: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
! 26: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! 27: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
! 28: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 29: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 30: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 31: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 32: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 33: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 34: * POSSIBILITY OF SUCH DAMAGE.
! 35: */
! 36:
! 37: #ifndef _SH_EXCEPTION_H_
! 38: #define _SH_EXCEPTION_H_
! 39: /*
! 40: * SH3/SH4 Exception handling.
! 41: */
! 42: #include <sh/devreg.h>
! 43:
! 44: #ifdef _KERNEL
! 45: #define SH3_TRA 0xffffffd0 /* 32bit */
! 46: #define SH3_EXPEVT 0xffffffd4 /* 32bit */
! 47: #define SH3_INTEVT 0xffffffd8 /* 32bit */
! 48: #define SH7709_INTEVT2 0xa4000000 /* 32bit */
! 49:
! 50: #define SH4_TRA 0xff000020 /* 32bit */
! 51: #define SH4_EXPEVT 0xff000024 /* 32bit */
! 52: #define SH4_INTEVT 0xff000028 /* 32bit */
! 53:
! 54: /*
! 55: * EXPEVT
! 56: */
! 57: /* Reset exception */
! 58: #define EXPEVT_RESET_POWER 0x000 /* Power-On reset */
! 59: #define EXPEVT_RESET_MANUAL 0x020 /* Manual reset */
! 60: #define EXPEVT_RESET_TLB_MULTI_HIT 0x140 /* SH4 only */
! 61:
! 62: /* General exception */
! 63: #define EXPEVT_TLB_MISS_LD 0x040 /* TLB miss (load) */
! 64: #define EXPEVT_TLB_MISS_ST 0x060 /* TLB miss (store) */
! 65: #define EXPEVT_TLB_MOD 0x080 /* Initial page write */
! 66: #define EXPEVT_TLB_PROT_LD 0x0a0 /* Protection violation (load) */
! 67: #define EXPEVT_TLB_PROT_ST 0x0c0 /* Protection violation (store)*/
! 68: #define EXPEVT_ADDR_ERR_LD 0x0e0 /* Address error (load) */
! 69: #define EXPEVT_ADDR_ERR_ST 0x100 /* Address error (store) */
! 70: #define EXPEVT_FPU 0x120 /* FPU exception */
! 71: #define EXPEVT_TRAPA 0x160 /* Unconditional trap (TRAPA) */
! 72: #define EXPEVT_RES_INST 0x180 /* Illegal instruction */
! 73: #define EXPEVT_SLOT_INST 0x1a0 /* Illegal slot instruction */
! 74: #define EXPEVT_BREAK 0x1e0 /* User break */
! 75: #define EXPEVT_FPU_DISABLE 0x800 /* FPU disabled */
! 76: #define EXPEVT_FPU_SLOT_DISABLE 0x820 /* Slot FPU disabled */
! 77:
! 78: /* Software bit */
! 79: #define EXP_USER 0x001 /* exception from user-mode */
! 80:
! 81: #define _SH_TRA_SYSCALL 0x80 /* syscall trapa number */
! 82: #define _SH_TRA_CACHECTL 0x81 /* cachectl trapa number */
! 83: #define _SH_TRA_BREAK 0xc3 /* magic number for debugger */
! 84:
! 85: /*
! 86: * INTEVT/INTEVT2
! 87: */
! 88: /* External interrupt */
! 89: #define SH_INTEVT_NMI 0x1c0
! 90:
! 91: #define SH_INTEVT_TMU0_TUNI0 0x400
! 92: #define SH_INTEVT_TMU1_TUNI1 0x420
! 93: #define SH_INTEVT_TMU2_TUNI2 0x440
! 94: #define SH_INTEVT_TMU2_TICPI2 0x460
! 95:
! 96: #define SH_INTEVT_SCI_ERI 0x4e0
! 97: #define SH_INTEVT_SCI_RXI 0x500
! 98: #define SH_INTEVT_SCI_TXI 0x520
! 99: #define SH_INTEVT_SCI_TEI 0x540
! 100:
! 101: #define SH_INTEVT_WDT_ITI 0x560
! 102:
! 103: #define SH_INTEVT_IRL9 0x320
! 104: #define SH_INTEVT_IRL11 0x360
! 105: #define SH_INTEVT_IRL13 0x3a0
! 106:
! 107: #define SH4_INTEVT_SCIF_ERI 0x700
! 108: #define SH4_INTEVT_SCIF_RXI 0x720
! 109: #define SH4_INTEVT_SCIF_BRI 0x740
! 110: #define SH4_INTEVT_SCIF_TXI 0x760
! 111:
! 112: #define SH7709_INTEVT2_IRQ0 0x600
! 113: #define SH7709_INTEVT2_IRQ1 0x620
! 114: #define SH7709_INTEVT2_IRQ2 0x640
! 115: #define SH7709_INTEVT2_IRQ3 0x660
! 116: #define SH7709_INTEVT2_IRQ4 0x680
! 117: #define SH7709_INTEVT2_IRQ5 0x6a0
! 118:
! 119: #define SH7709_INTEVT2_PINT07 0x700
! 120: #define SH7709_INTEVT2_PINT8F 0x720
! 121:
! 122: #define SH7709_INTEVT2_DEI0 0x800
! 123: #define SH7709_INTEVT2_DEI1 0x820
! 124: #define SH7709_INTEVT2_DEI2 0x840
! 125: #define SH7709_INTEVT2_DEI3 0x860
! 126:
! 127: #define SH7709_INTEVT2_IRDA_ERI 0x880
! 128: #define SH7709_INTEVT2_IRDA_RXI 0x8a0
! 129: #define SH7709_INTEVT2_IRDA_BRI 0x8c0
! 130: #define SH7709_INTEVT2_IRDA_TXI 0x8e0
! 131:
! 132: #define SH7709_INTEVT2_SCIF_ERI 0x900
! 133: #define SH7709_INTEVT2_SCIF_RXI 0x920
! 134: #define SH7709_INTEVT2_SCIF_BRI 0x940
! 135: #define SH7709_INTEVT2_SCIF_TXI 0x960
! 136:
! 137: #define SH7709_INTEVT2_ADC 0x980
! 138:
! 139: /* SH7750R, SH7751, SH7751R */
! 140: #define SH4_INTEVT_IRL0 0x240
! 141: #define SH4_INTEVT_IRL1 0x2a0
! 142: #define SH4_INTEVT_IRL2 0x300
! 143: #define SH4_INTEVT_IRL3 0x360
! 144:
! 145: #define SH4_INTEVT_IRQ0 0x200
! 146: #define SH4_INTEVT_IRQ1 0x220
! 147: #define SH4_INTEVT_IRQ2 0x240
! 148: #define SH4_INTEVT_IRQ3 0x260
! 149: #define SH4_INTEVT_IRQ4 0x280
! 150: #define SH4_INTEVT_IRQ5 0x2a0
! 151: #define SH4_INTEVT_IRQ6 0x2c0
! 152: #define SH4_INTEVT_IRQ7 0x2e0
! 153: #define SH4_INTEVT_IRQ8 0x300
! 154: #define SH4_INTEVT_IRQ9 0x320
! 155: #define SH4_INTEVT_IRQ10 0x340
! 156: #define SH4_INTEVT_IRQ11 0x360
! 157: #define SH4_INTEVT_IRQ12 0x380
! 158: #define SH4_INTEVT_IRQ13 0x3a0
! 159: #define SH4_INTEVT_IRQ14 0x3c0
! 160: #define SH4_INTEVT_IRQ15 0x3e0
! 161:
! 162: #define SH4_INTEVT_TMU3 0xb00
! 163: #define SH4_INTEVT_TMU4 0xb80
! 164:
! 165: #define SH4_INTEVT_PCISERR 0xa00
! 166: #define SH4_INTEVT_PCIERR 0xae0
! 167: #define SH4_INTEVT_PCIPWDWN 0xac0
! 168: #define SH4_INTEVT_PCIPWON 0xaa0
! 169: #define SH4_INTEVT_PCIDMA0 0xa80
! 170: #define SH4_INTEVT_PCIDMA1 0xa60
! 171: #define SH4_INTEVT_PCIDMA2 0xa40
! 172: #define SH4_INTEVT_PCIDMA3 0xa20
! 173:
! 174: #ifndef _LOCORE
! 175:
! 176: #if defined(SH3) && defined(SH4)
! 177: extern uint32_t __sh_TRA;
! 178: extern uint32_t __sh_EXPEVT;
! 179: extern uint32_t __sh_INTEVT;
! 180: #endif /* SH3 && SH4 */
! 181:
! 182: extern const char * const exp_type[];
! 183: extern const int exp_types;
! 184:
! 185: #endif /* !_LOCORE */
! 186:
! 187: #endif /* _KERNEL */
! 188: #endif /* !_SH_EXCEPTION_H_ */
CVSweb