You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							129 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							129 lines
						
					
					
						
							3.0 KiB
						
					
					
				/*
 | 
						|
             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
 |