I took a look at the code. Did not really seem substantially different
from what I had. I solved my problem by writing SPDR twice
after the SPM instruction. Still seems like a part bug to me.
At the end of my bootloader I have:
__asm__ __volatile__ ("rjmp 0x0000\n\t" ::);
The code that seems to be generated is:
__asm__ __volatile__ ("rjmp 0x0000\n\t" ::);
1e1c: 26 cf rjmp .-436 ; 0x1c6a
What don't I understand here? 1C6A is obviously not 0x0000.
1C6A is my spi_xfer() function.
I'll go with your zero Z, ijmp technique that way I'm sure I will
end up at zero.