avr-gcc currenly emits EICALL/EIJMP instructions without caring for
EIND, e.g. avr.md:3630:
(define_insn "call_insn"
[...]
""
"@
%!icall
%~call %x0
%!ijmp
%~jmp %x0"
...)
where %! resolves to 'e' for targets with > 128k of flash.
IMO that is not okay because the compiler does not care for EIND and
even if he (or the user) did that approch is it not IRQ-save.
Instead, programs for big targets should use linker relaxation and jump
to the generated jumping pad by means of IJMP/ICALL instead.
Thoughts?
Johann
_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list