diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2025-02-16 18:43:56 +0100 |
---|---|---|
committer | Georg-Johann Lay <avr@gjlay.de> | 2025-03-07 11:52:14 +0100 |
commit | 0d93e61c318823da567053d8f1561c78e2efcf06 (patch) | |
tree | 309dc1f2e78d7e4a3cffd01637574190f13bd5b7 /libctf/NEWS | |
parent | 15d8ef5b3688c9059464a44002009ff470a46977 (diff) | |
download | gdb-master.zip gdb-master.tar.gz gdb-master.tar.bz2 |
The prologue generated by __gcc_isr can be improved in
situations where:
* ZERO_REG is needed, and
* SREG is not clobbered by the ISR, and
* avr-gcc provides a GPR >= R16 with the Done chunk, and
* Code generation is for ordinary AVRs (not AVRrc).
For example, the prologue for
volatile char var;
__attribute__((signal)) void __vector_1 (void)
{
var = 1;
var = 0;
}
may be
00000000 <__vector_1>:
0: 8f 93 push r24
2: 1f 92 push r1
4: 80 e0 ldi r24, 0
6: 18 2e mov r1, r24
instead of the code as currently generated by GAS:
00000000 <__vector_1>:
0: 1f 92 push r1
2: 1f b6 in r1, SREG
4: 1f 92 push r1
6: 11 24 clr r1
8: 8f 93 push r24
which consumes more stack, time and code than needed.
gas/
PR gas/32704
PR gas/21683
* config/tc-avr.c (avr_isr): bool-ize.
(avr_emit_insn): Emit "mov" code as MOV R1,<reg>.
(avr_isr_stack_t): New typedef.
(avr_emit_push, avr_emit_pop): New static functions.
(avr_patch_gccisr_frag): Overhaul prologue and epilogue
generation.
Diffstat (limited to 'libctf/NEWS')
0 files changed, 0 insertions, 0 deletions