diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2012-04-14 10:09:45 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2012-04-14 10:09:45 +0000 |
commit | e8570c4a37e41117e3fd1e989e0b41f1e9608f3c (patch) | |
tree | 8aab63b2dd5fa938f7507c2938ca4be5f046b43b /Bootloaders/CDC/BootloaderAPITable.S | |
parent | a19dc3d20cd5c80adb80b1bd6f5126075911f411 (diff) | |
download | lufa-e8570c4a37e41117e3fd1e989e0b41f1e9608f3c.tar.gz lufa-e8570c4a37e41117e3fd1e989e0b41f1e9608f3c.tar.bz2 lufa-e8570c4a37e41117e3fd1e989e0b41f1e9608f3c.zip |
Fixed CDC and DFU bootloaders failing to compile when the bootloader section size is 8KB or more (thanks to Georg Glock).
Diffstat (limited to 'Bootloaders/CDC/BootloaderAPITable.S')
-rw-r--r-- | Bootloaders/CDC/BootloaderAPITable.S | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/Bootloaders/CDC/BootloaderAPITable.S b/Bootloaders/CDC/BootloaderAPITable.S index 50b7a5d38..fc1e2e99f 100644 --- a/Bootloaders/CDC/BootloaderAPITable.S +++ b/Bootloaders/CDC/BootloaderAPITable.S @@ -31,25 +31,45 @@ ; Bootloader API Jump Table .section .apitable, "ax" -; API function jump table +; Trampolines to actual API implementations if the target address is outside the +; range of a rjmp instruction (can happen with large bootloader sections) .org 0 +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_UNUSED: + ret + +; API function jump table +.org (96 - 32) .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 - nop ; UNUSED ENTRY - nop ; UNUSED ENTRY - nop ; UNUSED ENTRY - nop ; UNUSED ENTRY - ret + 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_UNUSED ; UNUSED ENTRY + rjmp BootloaderAPU_UNUSED ; UNUSED ENTRY + rjmp BootloaderAPU_UNUSED ; UNUSED ENTRY + rjmp BootloaderAPU_UNUSED ; UNUSED ENTRY + rjmp BootloaderAPU_UNUSED ; UNUSED ENTRY ; Bootloader table signatures and information -.org (32 - 8) +.org (96 - 8) BootloaderAPI_Signatures: .global BootloaderAPI_Signatures .long BOOT_START_ADDR ; Start address of the bootloader |