Update CDC driver INF files so that they should work even on systems without usbser...
[pub/USBasp.git] / Bootloaders / DFU / BootloaderAPITable.S
index b1d1b05..9d1e2fc 100644 (file)
@@ -7,7 +7,7 @@
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  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
   this software.
 */
 
-; Bootloader API Jump Table
-.section .apitable, "ax"
-.org 0
+; 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
+       BootloaderAPU_UNUSED1:
+               ret
+       BootloaderAPU_UNUSED2:
+               ret
+       BootloaderAPU_UNUSED3:
+               ret
+       BootloaderAPU_UNUSED4:
+               ret
+       BootloaderAPU_UNUSED5:
+               ret
+
+
 
 ; API function jump table
+.section .apitable_jumptable, "ax"
 .global BootloaderAPI_JumpTable
 BootloaderAPI_JumpTable:
-       rjmp BootloaderAPI_ErasePage
-       rjmp BootloaderAPI_WritePage
-       rjmp BootloaderAPI_FillWord
-       rjmp BootloaderAPI_ReadSignature
-       rjmp BootloaderAPI_ReadFuse
-       rjmp BootloaderAPI_ReadLock
-       rjmp BootloaderAPI_WriteLock
-
-; Bootloader table signature
-.org 30
-       .word 0xDCFB
+
+       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 BootloaderAPU_UNUSED1 ; UNUSED ENTRY 1
+       rjmp BootloaderAPU_UNUSED2 ; UNUSED ENTRY 2
+       rjmp BootloaderAPU_UNUSED3 ; UNUSED ENTRY 3
+       rjmp BootloaderAPU_UNUSED4 ; UNUSED ENTRY 4
+       rjmp BootloaderAPU_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 0xDFB1 ; Signature for the DFU class bootloader, V1
+       .word 0xDCFB ; Signature for a LUFA class bootloader