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?
This commit is contained in:
tmk 2013-09-18 16:03:03 +09:00
parent c7faa51ee8
commit 0ca415004a

View file

@ -71,7 +71,8 @@ void bootloader_jump_after_watchdog_reset(void)
MCUSR &= ~(1<<WDRF); MCUSR &= ~(1<<WDRF);
wdt_disable(); 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; ADCSRA = 0; TWCR = 0; UCSR0B = 0;
#endif #endif
// start Bootloader // This is compled into 'icall', address should be in word unit, not byte.
((void (*)(void))BOOTLOADER_START)(); ((void (*)(void))(BOOTLOADER_START/2))();
} }
#endif #endif