bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/21683] New: [avr] Support a pseudo-instruction to allow more ef


From: gjl at gcc dot gnu.org
Subject: [Bug gas/21683] New: [avr] Support a pseudo-instruction to allow more efficient GCC ISR prologues
Date: Wed, 28 Jun 2017 10:56:28 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=21683

            Bug ID: 21683
           Summary: [avr] Support a pseudo-instruction to allow more
                    efficient GCC ISR prologues
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: gjl at gcc dot gnu.org
  Target Milestone: ---

Background: avr-gcc currently generated ISR prologues and epilogues less
efficient than possible.  This is due to avr back-end design and decisions. 
Solving this in avr-gcc alone would be inappropriately amount of work and
instability, maybe even reducing code performance in other places than ISRs. 
This is the reason for why

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20296

is open for > 12 years now and has been suspended.

A comined GCC + GAS approach would be feasible, and this PR is the GAS part:

GAS implements a __gcc_isr pseudo-instruction which scans the code and emits
parts of ISR prologue and epilogue.

__gcc_isr 1: GAS will replace it by an ISR prologue chunk (at most 6 insns).

__gcc_isr 2: GAS will replace it by an ISR epilogue chunk (at most 5 insns).

__gcc_isr 0, Rx:  Scan the code since the last prologue chunk and replace all
encountered prologue and epilogue chunks by appropriate code. Rx is general
purpose register.

During parse (md_assemble), prologue and epilogue chunks are represented as
rs_machine_dependent fragments.  If "__gcc_isr 0, Rx" is seen, all
rs_machine_dependent fragments in the current chain are transformed into
ordinary rs_fill code fragments of then known fixed size.

After parse (md_pre_output_hook) a sanity check is performed which reports any
dangling chunks.

__gcc_isr is only available with the new command line option -mgcc-isr

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]