X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/e30be658c9b4d0cbbea6751c3935870165d97444..e7670d06e0724fc03c743b8f24251e6d25e2b4d6:/Bootloaders/DFU/BootloaderAPITable.S diff --git a/Bootloaders/DFU/BootloaderAPITable.S b/Bootloaders/DFU/BootloaderAPITable.S index 7f015f20a..0935aca77 100644 --- a/Bootloaders/DFU/BootloaderAPITable.S +++ b/Bootloaders/DFU/BootloaderAPITable.S @@ -30,14 +30,48 @@ ; Bootloader API Jump Table .section .apitable, "ax" -.org 0 -.global BootloaderAPI_JumpTable -BootloaderAPI_JumpTable: +; 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_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 (96 - 8) +BootloaderAPI_Signatures: +.global 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