X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/e30be658c9b4d0cbbea6751c3935870165d97444..c7344c22ac700dacf55a8dc729111dd7781c5fed:/Bootloaders/DFU/BootloaderAPITable.S diff --git a/Bootloaders/DFU/BootloaderAPITable.S b/Bootloaders/DFU/BootloaderAPITable.S index 7f015f20a..18ae390fc 100644 --- a/Bootloaders/DFU/BootloaderAPITable.S +++ b/Bootloaders/DFU/BootloaderAPITable.S @@ -30,14 +30,56 @@ ; 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_UNUSED1: + ret +BootloaderAPU_UNUSED2: + ret +BootloaderAPU_UNUSED3: + ret +BootloaderAPU_UNUSED4: + ret +BootloaderAPU_UNUSED5: + 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_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 +.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