public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
@ 2012-03-02 12:19 gjl at gcc dot gnu.org
  2012-03-02 12:23 ` [Bug target/52461] " gjl at gcc dot gnu.org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-02 12:19 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

             Bug #: 52461
           Summary: [avr] XMEGA+EBI: RAMPZ clobbered while reading from
                    flash
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: gjl@gcc.gnu.org
            Target: avr


To read from flash on devices with more than 64KiB of flash, RAMPZ is set
appropriately before using ELPM instruction.

Devices with external bus interface (EBI) use RAMPZ as high part of the RAM
address while reading from RAM.

Thus, and RAM read on EBI device that is performed via Z will fail after data
has been read from Flash.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
@ 2012-03-02 12:23 ` gjl at gcc dot gnu.org
  2012-03-02 12:31 ` gjl at gcc dot gnu.org
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-02 12:23 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4
                 CC|                            |eric.weddington at atmel
                   |                            |dot com
   Target Milestone|---                         |4.7.1

--- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-02 12:22:56 UTC ---
Eric, would you confirm this is actually a problem and set bug status to NEW?
Or set to INVALID if I misunderstood the EBI.

Can the EBI be switched off, so that RAMPZ affects ELPM but not LD?


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
  2012-03-02 12:23 ` [Bug target/52461] " gjl at gcc dot gnu.org
@ 2012-03-02 12:31 ` gjl at gcc dot gnu.org
  2012-03-03 14:13 ` gjl at gcc dot gnu.org
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-02 12:31 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fbi.sr at gmx dot de
   Target Milestone|4.7.1                       |4.7.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
  2012-03-02 12:23 ` [Bug target/52461] " gjl at gcc dot gnu.org
  2012-03-02 12:31 ` gjl at gcc dot gnu.org
@ 2012-03-03 14:13 ` gjl at gcc dot gnu.org
  2012-03-06  7:55 ` saturn at quantentunnel dot de
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-03 14:13 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |darkdragon2000 at hotmail
                   |                            |dot com

--- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-03 14:11:04 UTC ---
*** Bug 44940 has been marked as a duplicate of this bug. ***


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2012-03-03 14:13 ` gjl at gcc dot gnu.org
@ 2012-03-06  7:55 ` saturn at quantentunnel dot de
  2012-03-06 12:43 ` gjl at gcc dot gnu.org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: saturn at quantentunnel dot de @ 2012-03-06  7:55 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #3 from Markus Faust <saturn at quantentunnel dot de> 2012-03-06 07:55:39 UTC ---
(In reply to comment #1)
> Eric, would you confirm this is actually a problem and set bug status to NEW?

For me this seems to be a really severe problem, because as soon as my code
size reaches 65536 bytes, RAMPZ seems to be set to 1. On the other hand, I/O
register access is (sometimes) done via STD with Z register and will go wrong
if RAMPZ is not 0. This is mostly the same behaviour as described by
darkdragon2000 in bug 44940, except that it also happens in the application
section if code size is >=65536 bytes.

device: ATxmega128A1
gcc version 4.5.1 (AVR_8_bit_GNU_Toolchain_3.2.3_314) (from Atmel)
Windows 2000

It would be very helpful if someone could provide a fix, as I am stuck at work
because of this problem.

I have put a "RAMPZ=0;" at the very beginning of main(), which seems to do the
trick for the moment, but I think this is a very ugly hack and potentially
dangerous.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2012-03-06  7:55 ` saturn at quantentunnel dot de
@ 2012-03-06 12:43 ` gjl at gcc dot gnu.org
  2012-03-06 12:46 ` gjl at gcc dot gnu.org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-06 12:43 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #4 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-06 12:43:00 UTC ---
(In reply to comment #3)
> 
> This is mostly the same behaviour as described by
> darkdragon2000 in bug 44940, except that it also happens in the application
> section if code size is >=65536 bytes.
> 
> device: ATxmega128A1
> gcc version 4.5.1 (AVR_8_bit_GNU_Toolchain_3.2.3_314) (from Atmel)
> Windows 2000

XMEGA support is is added in GCC 4.7.0 and is still tentative an not well
tested.

If you use a vendor specific GCC port like mentioned above, please report bugs
to the respective vendor support address or bug tracker, i.e. avr@atmel.com in
this case.

This bug tracker if for the official GCC hosted by FSF, not for private ports.

This means that this PR refers to the FSF hosted version of the compiler, not
to Atmel's fork of the compiler which might or might not expose similar
problems.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2012-03-06 12:43 ` gjl at gcc dot gnu.org
@ 2012-03-06 12:46 ` gjl at gcc dot gnu.org
  2012-03-07 10:14 ` saturn at quantentunnel dot de
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-06 12:46 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot       |gjl at gcc dot gnu.org
                   |gnu.org                     |
   Target Milestone|4.7.0                       |4.7.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2012-03-06 12:46 ` gjl at gcc dot gnu.org
@ 2012-03-07 10:14 ` saturn at quantentunnel dot de
  2012-03-07 10:34 ` gjl at gcc dot gnu.org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: saturn at quantentunnel dot de @ 2012-03-07 10:14 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #5 from Markus Faust <saturn at quantentunnel dot de> 2012-03-07 10:12:41 UTC ---
(In reply to comment #4)
> This bug tracker if for the official GCC hosted by FSF, not for private ports.
Sorry about that.

Yesterday I found Stefan's binaries (Thanks, Stefan):
gcc version 4.7.0 20120217 - by SRMeister (GCC)

It seems to show the same behaviour.
ELPM is used in the __do_copy_data section (the only ELPM in my whole object
code, btw.).

(In reply to comment #1)
> Can the EBI be switched off, so that RAMPZ affects ELPM but not LD?

Actually, the EBI is switched off by default (and I'm not using it), but
obviously RAMPZ does still affect the adressing of the data space (LD/ST with
Z). I think switching EBI on/off only affects the function of the corresponding
port pins.

Further more, I didn't find any documentation if RAMPZ affects addressing of
data space on devices without EBI, but it is documented that (for LD/ST with
increment)
> The RAMPZ Register in the I/O area is updated in parts with more than 64K bytes data space or more than 64K bytes Program memory, [...].
(AVR Instruction Set, doc0856i)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2012-03-07 10:14 ` saturn at quantentunnel dot de
@ 2012-03-07 10:34 ` gjl at gcc dot gnu.org
  2012-03-07 11:08 ` fbi.sr at gmx dot de
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-07 10:34 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #6 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-07 10:33:24 UTC ---
Author: gjl
Date: Wed Mar  7 10:33:19 2012
New Revision: 185030

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=185030
Log:
libgcc/
    PR target/52461
    PR target/52508
    * config/avr/lib1funcs.S (__do_copy_data): Clear RAMPZ after usage
    if RAMPZ affects reading from RAM.
    (__tablejump_elpm__): Ditto.
    (.xload): Ditto.
    (__movmemx_hi): Ditto.
    (__do_global_ctors): Right condition for RAMPZ usage is "have ELPM".
    (__do_global_dtors): Ditto.
    (__xload_1, __xload_2, __xload_3, __xload_4): Ditto.
    (__movmemx_hi): Ditto.
gcc/    
    PR target/52461
    * gcc/config/avr/avr.c (avr_out_lpm): Clear RAMPZ after usage
    if RAMPZ affects reading from RAM.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr.c
    trunk/libgcc/ChangeLog
    trunk/libgcc/config/avr/lib1funcs.S


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2012-03-07 10:34 ` gjl at gcc dot gnu.org
@ 2012-03-07 11:08 ` fbi.sr at gmx dot de
  2012-03-07 12:35 ` gjl at gcc dot gnu.org
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: fbi.sr at gmx dot de @ 2012-03-07 11:08 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #7 from Stefan Reichardt <fbi.sr at gmx dot de> 2012-03-07 11:07:33 UTC ---
nice!
i willl build it and publish it on avrfreaks soon, so Markus can try it out


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2012-03-07 11:08 ` fbi.sr at gmx dot de
@ 2012-03-07 12:35 ` gjl at gcc dot gnu.org
  2012-03-21 13:24 ` gjl at gcc dot gnu.org
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-07 12:35 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-03-07
     Ever Confirmed|0                           |1

--- Comment #8 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-07 12:35:17 UTC ---
(In reply to comment #7)
> nice!
> i willl build it and publish it on avrfreaks soon, so Markus can try it out

Stefan, please noteice other PRs that won't get into 4.7.0 and fix problems
with new features: PR52496, PR52505,  PR52506,  PR52507,  PR52508.

Backporting to 4.7 will happen if 4.7-branch is open for bugfixing which will
be in about 3 weeks after 4.7.0 release.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2012-03-07 12:35 ` gjl at gcc dot gnu.org
@ 2012-03-21 13:24 ` gjl at gcc dot gnu.org
  2012-03-22 15:14 ` gjl at gcc dot gnu.org
  2012-03-22 15:55 ` gjl at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-21 13:24 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #9 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-21 13:20:25 UTC ---
Author: gjl
Date: Wed Mar 21 13:20:20 2012
New Revision: 185605

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=185605
Log:
    PR rtl-optimization/52543
    PR target/52461
    * config/avr/avr-protos.h (avr_load_lpm): New prototype.
    * config/avr/avr.c (avr_mode_dependent_address_p): New function.
    (TARGET_MODE_DEPENDENT_ADDRESS_P): New define.
    (avr_load_libgcc_p): Restrict to __flash loads.
    (avr_out_lpm): Only handle 1-byte loads from __flash.
    (avr_load_lpm): New function.
    (avr_find_unused_d_reg): Remove.
    (avr_out_lpm_no_lpmx): Remove.
    (adjust_insn_length): Handle ADJUST_LEN_LOAD_LPM.
    * config/avr/avr.md (unspec): Add UNSPEC_LPM.
    (load_<mode>_libgcc): Use UNSPEC_LPM instead of MEM.
    (load_<mode>, load_<mode>_clobber): New insns.
    (mov<mode>): For multi-byte move from non-generic
    16-bit address spaces: Expand to load_<mode> resp.
    load_<mode>_clobber.
    (load<mode>_libgcc): Remove expander.
    (split-lpmx): Remove split.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr-protos.h
    trunk/gcc/config/avr/avr.c
    trunk/gcc/config/avr/avr.md


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2012-03-21 13:24 ` gjl at gcc dot gnu.org
@ 2012-03-22 15:14 ` gjl at gcc dot gnu.org
  2012-03-22 15:55 ` gjl at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-22 15:14 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

--- Comment #10 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-22 15:07:21 UTC ---
Author: gjl
Date: Thu Mar 22 15:06:57 2012
New Revision: 185697

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=185697
Log:
libgcc/
    Backport from 2012-03-07 mainline r185033.

    PR target/52507
    * config/avr/lib1funcs.S (__movmemx_hi): Fix loop label in RAM-part.

    Backport from 2012-03-07 mainline r185031.

    PR target/52505
    * config/avr/lib1funcs.S (__xload_1): Don't read unintentionally
    from RAM.

    Backport from 2012-03-07 mainline r185030.

    PR target/52461
    PR target/52508
    * config/avr/lib1funcs.S (__do_copy_data): Clear RAMPZ after usage
    if RAMPZ affects reading from RAM.
    (__tablejump_elpm__): Ditto.
    (.xload): Ditto.
    (__movmemx_hi): Ditto.
    (__do_global_ctors): Right condition for RAMPZ usage is "have ELPM".
    (__do_global_dtors): Ditto.
    (__xload_1, __xload_2, __xload_3, __xload_4): Ditto.
    (__movmemx_hi): Ditto.

gcc/
    Backport from 2012-03-22 mainline r185692.

    PR target/52496
    * config/avr/avr.md (unspec): Remove UNSPEC_MEMORY_BARRIER.
    (unspecv): Add UNSPECV_MEMORY_BARRIER.
    (cli_sei): Use unspec_volatile instead of unspec for memory barrier.
    (delay_cycles_1, delay_cycles_2): Ditto.
    (delay_cycles_3, delay_cycles_4): Ditto.
    (nopv, *nopv): Ditto.
    (sleep, *sleep): Ditto.
    (wdr, *wdr): Ditto.

    Backport from 2012-03-21 mainline r185605.

    PR rtl-optimization/52543
    PR target/52461
    * config/avr/avr-protos.h (avr_load_lpm): New prototype.
    * config/avr/avr.c (avr_mode_dependent_address_p): New function.
    (TARGET_MODE_DEPENDENT_ADDRESS_P): New define.
    (avr_load_libgcc_p): Restrict to __flash loads.
    (avr_out_lpm): Only handle 1-byte loads from __flash.
    (avr_load_lpm): New function.
    (avr_find_unused_d_reg): Remove.
    (avr_out_lpm_no_lpmx): Remove.
    (adjust_insn_length): Handle ADJUST_LEN_LOAD_LPM.
    * config/avr/avr.md (unspec): Add UNSPEC_LPM.
    (load_<mode>_libgcc): Use UNSPEC_LPM instead of MEM.
    (load_<mode>, load_<mode>_clobber): New insns.
    (mov<mode>): For multi-byte move from non-generic
    16-bit address spaces: Expand to load_<mode> resp.
    load_<mode>_clobber.
    (load<mode>_libgcc): Remove expander.
    (split-lpmx): Remove split.

    Backport from 2012-03-13 mainline r185329.

    PR target/52488
    * config/avr/avr.c (avr_prologue_setup_frame): Cut down stack
    offset (size) to a value the insns can deal with.
    (expand_epilogue): Ditto.

    Backport from 2012-03-12 mainline r185256.

    PR target/52499
    * config/avr/avr.c (avr_mode_code_base_reg_class): Change return
    type from reg_class_t to enum reg_class.
    * config/avr/avr-protos.h (avr_mode_code_base_reg_class): Ditto.

    Backport from 2012-03-12 mainline r185253.

    PR target/52148
    * config/avr/avr.c (avr_out_movmem): Fix typo in output template
    for the case ADDR_SPACE_FLASH and AVR_HAVE_LPMX introduced in
    r184615 from 2012-02-28.

    Backport from 2012-03-08 mainline r185105.

    * config/avr/avr.md (*addhi3, addhi3_clobber): Add "w" alternative
    for constants in [-63,63].

    Backport from 2012-03-08 mainline r185100.

    PR target/52496
    * config/avr/avr.c (avr_mem_clobber): New static function.
    (avr_expand_delay_cycles): Add memory clobber operand to
    delay_cycles_1, delay_cycles_2, delay_cycles_3, delay_cycles_4.
    * config/avr/avr.md (unspec): Add UNSPEC_MEMORY_BARRIER.
    (enable_interrupt, disable_interrupt): New expander.
    (nopv, sleep, wdr): New expanders.
    (delay_cycles_1): Add memory clobber.
    (delay_cycles_2): Add memory clobber.
    (delay_cycles_3): Add memory clobber.
    (delay_cycles_4): Add memory clobber.
    (cli_sei): New insn from former "enable_interrupt",
    "disable_interrupt" with memory clobber.
    (*wdt): New insn from former "wdt" with memory clobber.
    (*nopv): Similar, but for "nopv".
    (*sleep): Similar, but for "sleep".

    Backport from 2012-03-07 mainline r185043.

    PR target/52484
    * config/avr/avr.md (xload<mode>_A): Add R22... to register footprint.

    Backport from 2012-03-07 mainline r185032.

    PR target/52506
    * gcc/config/avr/avr.c (expand_epilogue): Fix order of restoration
    to: RAMPZ, RAMPY, RAMPX, RAMPD.
    (expand_prologue): Only clear RAMPZ if it has effect on RAM-read.

    Backport from 2012-03-07 mainline r185031.

    PR target/52505
    * config/avr/avr.c (avr_out_xload): Don't read unintentionally
    from RAM.
    * config/avr/avr.md (xload_8): Adjust insn length.

    Backport from 2012-03-07 mainline r185030.

    PR target/52461
    * gcc/config/avr/avr.c (avr_out_lpm): Clear RAMPZ after usage
    if RAMPZ affects reading from RAM.

    Backport from 2012-03-05 mainline r184919.

    * config/avr/avr.md (*umaddqihi4.2): New insn-and-split.


Modified:
    branches/gcc-4_7-branch/gcc/ChangeLog
    branches/gcc-4_7-branch/gcc/config/avr/avr-protos.h
    branches/gcc-4_7-branch/gcc/config/avr/avr.c
    branches/gcc-4_7-branch/gcc/config/avr/avr.md
    branches/gcc-4_7-branch/libgcc/ChangeLog
    branches/gcc-4_7-branch/libgcc/config/avr/lib1funcs.S


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash
  2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
                   ` (11 preceding siblings ...)
  2012-03-22 15:14 ` gjl at gcc dot gnu.org
@ 2012-03-22 15:55 ` gjl at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-22 15:55 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52461

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

--- Comment #11 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-22 15:50:55 UTC ---
Fixed in 4.7.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-03-22 15:52 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-02 12:19 [Bug target/52461] New: [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash gjl at gcc dot gnu.org
2012-03-02 12:23 ` [Bug target/52461] " gjl at gcc dot gnu.org
2012-03-02 12:31 ` gjl at gcc dot gnu.org
2012-03-03 14:13 ` gjl at gcc dot gnu.org
2012-03-06  7:55 ` saturn at quantentunnel dot de
2012-03-06 12:43 ` gjl at gcc dot gnu.org
2012-03-06 12:46 ` gjl at gcc dot gnu.org
2012-03-07 10:14 ` saturn at quantentunnel dot de
2012-03-07 10:34 ` gjl at gcc dot gnu.org
2012-03-07 11:08 ` fbi.sr at gmx dot de
2012-03-07 12:35 ` gjl at gcc dot gnu.org
2012-03-21 13:24 ` gjl at gcc dot gnu.org
2012-03-22 15:14 ` gjl at gcc dot gnu.org
2012-03-22 15:55 ` gjl at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).