~ruther/qmk_firmware

0ca415004a453b2a841880d3a66492c664505737 — tmk 12 years ago c7faa51
Fix bootloader jump use word address

- Call of function pointer is compiled into 'icall' instruction.
It should use word address but it has used byte address :( It seems
jump has worked luckily by chance until now. why it worked?
1 files changed, 4 insertions(+), 3 deletions(-)

M common/bootloader.c
M common/bootloader.c => common/bootloader.c +4 -3
@@ 71,7 71,8 @@ void bootloader_jump_after_watchdog_reset(void)
        MCUSR &= ~(1<<WDRF);
        wdt_disable();

        ((void (*)(void))BOOTLOADER_START)();
        // This is compled into 'icall', address should be in word unit, not byte.
        ((void (*)(void))(BOOTLOADER_START/2))();
    }
}



@@ 141,7 142,7 @@ void bootloader_jump(void) {
    ADCSRA = 0; TWCR = 0; UCSR0B = 0;
#endif

    // start Bootloader
    ((void (*)(void))BOOTLOADER_START)();
    // This is compled into 'icall', address should be in word unit, not byte.
    ((void (*)(void))(BOOTLOADER_START/2))();
}
#endif