Blame view

src/lufa-LUFA-170418/LUFA/Platform/UC3/Exception.S 2.99 KB
ca85a266   gperson   le vrai commit, c...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  /*
               LUFA Library
       Copyright (C) Dean Camera, 2017.
  
    dean [at] fourwalledcubicle [dot] com
             www.lufa-lib.org
  */
  
  /*
    Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com)
  
    Permission to use, copy, modify, distribute, and sell this
    software and its documentation for any purpose is hereby granted
    without fee, provided that the above copyright notice appear in
    all copies and that both that the copyright notice and this
    permission notice and warranty disclaimer appear in supporting
    documentation, and that the name of the author not be used in
    advertising or publicity pertaining to distribution of the
    software without specific, written prior permission.
  
    The author disclaims all warranties with regard to this
    software, including all implied warranties of merchantability
    and fitness.  In no event shall the author be liable for any
    special, indirect or consequential damages or any damages
    whatsoever resulting from loss of use, data or profits, whether
    in an action of contract, negligence or other tortious action,
    arising out of or in connection with the use or performance of
    this software.
  */
  
  #if defined(__AVR32__)
  #include <avr32/io.h>
  
  .section .exception_handlers, "ax", @progbits
  
  // ================= EXCEPTION TABLE ================
  .balign  0x200
  .global  EVBA_Table
  EVBA_Table:
  
  .org  0x000
  Exception_Unrecoverable_Exception:
  	rjmp $
  .org  0x004
  Exception_TLB_Multiple_Hit:
  	rjmp $
  .org  0x008
  Exception_Bus_Error_Data_Fetch:
  	rjmp $
  .org  0x00C
  Exception_Bus_Error_Instruction_Fetch:
  	rjmp $
  .org  0x010
  Exception_NMI:
  	rjmp $
  .org  0x014
  Exception_Instruction_Address:
  	rjmp $
  .org  0x018
  Exception_ITLB_Protection:
  	rjmp $
  .org  0x01C
  Exception_OCD_Breakpoint:
  	rjmp $
  .org  0x020
  Exception_Illegal_Opcode:
  	rjmp $
  .org  0x024
  Exception_Unimplemented_Instruction:
  	rjmp $
  .org  0x028
  Exception_Privilege_Violation:
  	rjmp $
  .org  0x02C
  Exception_Floating_Point:
  	rjmp $
  .org  0x030
  Exception_Coprocessor_Absent:
  	rjmp $
  .org  0x034
  Exception_Data_Address_Read:
  	rjmp $
  .org  0x038
  Exception_Data_Address_Write:
  	rjmp $
  .org  0x03C
  Exception_DTLB_Protection_Read:
  	rjmp $
  .org  0x040
  Exception_DTLB_Protection_Write:
  	rjmp $
  .org  0x044
  Exception_DTLB_Modified:
  	rjmp $
  .org  0x050
  Exception_ITLB_Miss:
  	rjmp $
  .org  0x060
  Exception_DTLB_Miss_Read:
  	rjmp $
  .org  0x070
  Exception_DTLB_Miss_Write:
  	rjmp $
  .org  0x100
  Exception_Supervisor_Call:
      rjmp $
  // ============== END OF EXCEPTION TABLE =============
  
  // ============= GENERAL INTERRUPT HANDLER ===========
  .balign 4
  .irp    Level, 0, 1, 2, 3
  Exception_INT\Level:
  	mov     r12, \Level
  	call    INTC_GetInterruptHandler
  	mov     pc, r12
  .endr
  // ========= END OF GENERAL INTERRUPT HANDLER ========
  
  // ====== GENERAL INTERRUPT HANDLER OFFSET TABLE ======
  .balign 4
  .global Autovector_Table
  Autovector_Table:
  .irp    Level, 0, 1, 2, 3
  	.word ((AVR32_INTC_INT0 + \Level) << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (Exception_INT\Level - EVBA_Table)
  .endr
  // === END OF GENERAL INTERRUPT HANDLER OFFSET TABLE ===
  
  #endif