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.
		
		
		
		
		
			
		
			
				
					92 lines
				
				2.9 KiB
			
		
		
			
		
	
	
					92 lines
				
				2.9 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								/*
							 | 
						||
| 
								 | 
							
								             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.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								; Trampolines to actual API implementations if the target address is outside the
							 | 
						||
| 
								 | 
							
								; range of a rjmp instruction (can happen with large bootloader sections)
							 | 
						||
| 
								 | 
							
								.section .apitable_trampolines, "ax"
							 | 
						||
| 
								 | 
							
								.global BootloaderAPI_Trampolines
							 | 
						||
| 
								 | 
							
								BootloaderAPI_Trampolines:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									BootloaderAPI_ErasePage_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_ErasePage
							 | 
						||
| 
								 | 
							
									BootloaderAPI_WritePage_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_WritePage
							 | 
						||
| 
								 | 
							
									BootloaderAPI_FillWord_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_FillWord
							 | 
						||
| 
								 | 
							
									BootloaderAPI_ReadSignature_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_ReadSignature
							 | 
						||
| 
								 | 
							
									BootloaderAPI_ReadFuse_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_ReadFuse
							 | 
						||
| 
								 | 
							
									BootloaderAPI_ReadLock_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_ReadLock
							 | 
						||
| 
								 | 
							
									BootloaderAPI_WriteLock_Trampoline:
							 | 
						||
| 
								 | 
							
										jmp BootloaderAPI_WriteLock
							 | 
						||
| 
								 | 
							
									BootloaderAPI_UNUSED1:
							 | 
						||
| 
								 | 
							
										ret
							 | 
						||
| 
								 | 
							
									BootloaderAPI_UNUSED2:
							 | 
						||
| 
								 | 
							
										ret
							 | 
						||
| 
								 | 
							
									BootloaderAPI_UNUSED3:
							 | 
						||
| 
								 | 
							
										ret
							 | 
						||
| 
								 | 
							
									BootloaderAPI_UNUSED4:
							 | 
						||
| 
								 | 
							
										ret
							 | 
						||
| 
								 | 
							
									BootloaderAPI_UNUSED5:
							 | 
						||
| 
								 | 
							
										ret
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								; API function jump table
							 | 
						||
| 
								 | 
							
								.section .apitable_jumptable, "ax"
							 | 
						||
| 
								 | 
							
								.global BootloaderAPI_JumpTable
							 | 
						||
| 
								 | 
							
								BootloaderAPI_JumpTable:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_ErasePage_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_WritePage_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_FillWord_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_ReadSignature_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_ReadFuse_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_ReadLock_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_WriteLock_Trampoline
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
							 | 
						||
| 
								 | 
							
									rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								; Bootloader table signatures and information
							 | 
						||
| 
								 | 
							
								.section .apitable_signatures, "ax"
							 | 
						||
| 
								 | 
							
								.global BootloaderAPI_Signatures
							 | 
						||
| 
								 | 
							
								BootloaderAPI_Signatures:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									.long BOOT_START_ADDR ; Start address of the bootloader
							 | 
						||
| 
								 | 
							
									.word 0xDF00 ; Signature for the CDC class bootloader
							 | 
						||
| 
								 | 
							
									.word 0xDCFB ; Signature for a LUFA class bootloader
							 |