public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug target/52261] New: [avr] Add support for AVR Xmega cores @ 2012-02-15 12:33 gjl at gcc dot gnu.org 2012-02-15 12:36 ` [Bug target/52261] " gjl at gcc dot gnu.org ` (8 more replies) 0 siblings, 9 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-15 12:33 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 Bug #: 52261 Summary: [avr] Add support for AVR Xmega cores Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: target AssignedTo: unassigned@gcc.gnu.org ReportedBy: gjl@gcc.gnu.org CC: eric.weddington@atmel.com Target: avr Xmega core are special with respect to I-flag instruction and writing SPL (low byte of stack pointer SP): In old cores, setting I-flag by means of SEI/RETI/OUT has a latency of 1 instruction In Xmega cores, setting I-flag by means of SEI/RETI/OUT has a latency of 0 instructions. This, writing to SP by a sequence like IN tmp_reg, SREG CLI OUT SP_H, %B1 OUT SREG, tmp_reg OUT SP_L, %A1 is no move correct because write of SP with that sequence is no more atomic. Xmega's OUT SP_L,* inhibits IRQs for 4 instructions so that the following sequence can be used instead to write to SP: OUT SP_L, %A1 OUT SP_H, %B1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org @ 2012-02-15 12:36 ` gjl at gcc dot gnu.org 2012-02-15 13:16 ` gjl at gcc dot gnu.org ` (7 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-15 12:36 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 Georg-Johann Lay <gjl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P4 Status|UNCONFIRMED |NEW Last reconfirmed| |2012-02-15 Target Milestone|--- |4.7.0 Ever Confirmed|0 |1 --- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-15 12:35:38 UTC --- For Xmega cores and MCUs supported by binutils, see src/gas/config/tc-avr.c http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-avr.c?content-type=text/x-cvsweb-markup&cvsroot=src ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org 2012-02-15 12:36 ` [Bug target/52261] " gjl at gcc dot gnu.org @ 2012-02-15 13:16 ` gjl at gcc dot gnu.org 2012-02-20 4:33 ` fbi.sr at gmx dot de ` (6 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-15 13:16 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-15 13:16:01 UTC --- Author: gjl Date: Wed Feb 15 13:15:56 2012 New Revision: 184269 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184269 Log: libgcc/ PR target/52261 * config/avr/lib1funcs.S (__prologue_saves__): Handle AVR_XMEGA (__epilogue_restores__): Ditto. gcc/ PR target/52261 * config/avr/avr-devices.c (avr_arch_types): Add avrxmega2, avrxmega4, avrxmega5, avrxmega6, avrxmega7. Rewrite initializers for .macro. * config/avr/avr-mcus.def (AVR_MCU): Add known MCUs: avrxmega2: atxmega16a4, atxmega16d4, atxmega16x1, atxmega32a4 atxmega32d4, atxmega32x1. avrxmega4: atxmega64a3, atxmega64d3. avrxmega5: atxmega64a1, atxmega64a1u. avrxmega6: atxmega128a3, atxmega128d3, atxmega192a3, atxmega192d3, atxmega256a3, atxmega256a3b, atxmega256a3bu, atxmega256d3. avrxmega7: atxmega128a1, atxmega128a1u. * config/avr/multilib.h: Regenerate. * config/avr/t-multilib: Regenerate. * config/avr/avr-tables.opt: Regenerate. * config/avr/avr.h (enum avr_arch): Add: ARCH_AVRXMEGA2, ARCH_AVRXMEGA4, ARCH_AVRXMEGA5, ARCH_AVRXMEGA6, ARCH_AVRXMEGA7. (struct base_arch_s): Rename reserved to xmega_p. Rename reserved2 to have_rampd. (AVR_XMEGA): New define. (AVR_HAVE_RAMPD, AVR_HAVE_RAMPX, AVR_HAVE_RAMPY): New defines. (AVR_HAVE_RAMPZ): Change definition to fit xmega. * config/avr/predicates.md (io_address_operand): Take into account SFR offset. (low_io_address_operand): Ditto. (high_io_address_operand): Ditto. * config/avr/avr.md (isa): Add alternatives no_xmega, xmega. (enabled, movhi_sp_r): Use them. * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use cpp_define_formatted to built-in define __AVR_ARCH__. (__AVR_XMEGA__): New built-in define. (__AVR_HAVE_RAMPD__): New built-in define. (__AVR_HAVE_RAMPX__): New built-in define. (__AVR_HAVE_RAMPY__): New built-in define. (__AVR_HAVE_RAMPZ__): Change condition when to built-in define it. * config/avr/avr.c (avr_addr_t): Add ccp, rampd, rampx, rampy. (avr_option_override): Initialize them. (sreg_rtx, rampd_rtx, rampx_rtx, rampy_rtx): New GTY rtx. (avr_init_expanders): Initialize them. No more block several calls. (emit_push_sfr): New static function. (avr_prologue_setup_frame): Use it to push SREG, RAMPD/X/Y/Z as needed. Handle AVR_XMEGA. (expand_epilogue): Handle AVR_XMEGA. Pop RAMPD/X/Y/Z as needed. (avr_print_operand): Print addreeses as symbols for RAMPX, RAMPY, RAMPD, CCP. (output_movhi): Handle AVR_XMEGA when writing to SP. (avr_out_movhi_mr_r_xmega): New static function. (out_movhi_mr_r): Forward to avr_out_movhi_mr_r_xmega for AVR_XMEGA. (avr_file_start): Print symbol defines for __RAMPX__, __RAMPY__, __RAMPD__, __CCP__ as needed. Modified: trunk/gcc/ChangeLog trunk/gcc/config/avr/avr-c.c trunk/gcc/config/avr/avr-devices.c trunk/gcc/config/avr/avr-mcus.def trunk/gcc/config/avr/avr-tables.opt trunk/gcc/config/avr/avr.c trunk/gcc/config/avr/avr.h trunk/gcc/config/avr/avr.md trunk/gcc/config/avr/multilib.h trunk/gcc/config/avr/predicates.md trunk/gcc/config/avr/t-multilib trunk/libgcc/ChangeLog trunk/libgcc/config/avr/lib1funcs.S ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org 2012-02-15 12:36 ` [Bug target/52261] " gjl at gcc dot gnu.org 2012-02-15 13:16 ` gjl at gcc dot gnu.org @ 2012-02-20 4:33 ` fbi.sr at gmx dot de 2012-02-20 11:32 ` gjl at gcc dot gnu.org ` (5 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: fbi.sr at gmx dot de @ 2012-02-20 4:33 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #3 from Stefan Reichardt <fbi.sr at gmx dot de> 2012-02-20 02:01:30 UTC --- Could you add support for the few new devices with USB Support aswell? example Xmega32A4U. For the moment, i am using your code with xmega128a1 and i see no problems. Thanks alot! ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org ` (2 preceding siblings ...) 2012-02-20 4:33 ` fbi.sr at gmx dot de @ 2012-02-20 11:32 ` gjl at gcc dot gnu.org 2012-02-22 2:44 ` fbi.sr at gmx dot de ` (4 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-20 11:32 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #4 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-20 11:17:58 UTC --- (In reply to comment #3) > Could you add support for the few new devices with USB Support aswell? example > Xmega32A4U. I am not sure if that would help much because there is no support in binutils. http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-avr.c?rev=1.79&content-type=text/x-cvsweb-markup&cvsroot=src Con you compile with -mmcu=avrxmega2 -D__AVR_XMEGA32A4U__ and then assemble and link appropriately? ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org ` (3 preceding siblings ...) 2012-02-20 11:32 ` gjl at gcc dot gnu.org @ 2012-02-22 2:44 ` fbi.sr at gmx dot de 2012-02-23 20:13 ` gjl at gcc dot gnu.org ` (3 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: fbi.sr at gmx dot de @ 2012-02-22 2:44 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #5 from Stefan Reichardt <fbi.sr at gmx dot de> 2012-02-22 01:38:52 UTC --- Its no problem to compile and link it that way but i dont have that device so cant test it. I would make a patch myself and post it here and on binutils, if i knew that this would only involve copying some lines from the devices without USB support. Some devices like xmega128A1U are already there so i suppose all functionality for the new USB devices is already in the code. Maybe you or Eric could give a short statement about this? Stefan ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org ` (4 preceding siblings ...) 2012-02-22 2:44 ` fbi.sr at gmx dot de @ 2012-02-23 20:13 ` gjl at gcc dot gnu.org 2012-02-24 16:29 ` gjl at gcc dot gnu.org ` (2 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-23 20:13 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #6 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-23 19:26:06 UTC --- Author: gjl Date: Thu Feb 23 19:26:00 2012 New Revision: 184522 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184522 Log: PR target/52261 * config/avr/lib1funcs.S (__AVR__XMEGA__): Fix tippo to __AVR_XMEGA__. Modified: trunk/libgcc/ChangeLog trunk/libgcc/config/avr/lib1funcs.S ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org ` (5 preceding siblings ...) 2012-02-23 20:13 ` gjl at gcc dot gnu.org @ 2012-02-24 16:29 ` gjl at gcc dot gnu.org 2012-02-28 8:53 ` gjl at gcc dot gnu.org 2012-02-28 9:14 ` gjl at gcc dot gnu.org 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-24 16:29 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #7 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-24 16:26:46 UTC --- Author: gjl Date: Fri Feb 24 16:26:35 2012 New Revision: 184559 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184559 Log: PR target/52261 * config/avr/avr.c (avr_out_movhi_mr_r_xmega): Use base to test for unusedness in st X addressing. Modified: trunk/gcc/ChangeLog trunk/gcc/config/avr/avr.c ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org ` (6 preceding siblings ...) 2012-02-24 16:29 ` gjl at gcc dot gnu.org @ 2012-02-28 8:53 ` gjl at gcc dot gnu.org 2012-02-28 9:14 ` gjl at gcc dot gnu.org 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-28 8:53 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 --- Comment #8 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-28 08:44:15 UTC --- Author: gjl Date: Tue Feb 28 08:44:08 2012 New Revision: 184614 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184614 Log: PR target/49868 PR target/52261 * doc/extend.texi (AVR Named Address Spaces): No more try to fix address spaces located outside of device flash. * config/avr/avr.h (base_arch_s): Remove field n_segments. (mcu_type_s): Add field n_flash. * config/avr/avr-devices.c (avr_arch_types): Remove .n_segments. Set .have_elpm and .have_elpmx to 1 for avrxmega4 and avrxmega5. (AVR_MCU): Add N_FLASH argument. * config/avr/avr-mcus.def (AVR_MCU): Add initializer for .n_flash. * config/avr/avr-c.c (avr_cpu_cpp_builtins): Only define built-in macro __FLASH<n> if that address space makes sense for the device. * config/avr/avr.c (avr_out_lpm): Don't try to fix address spaces outside of target flash. (avr_asm_named_section): Ditto. (avr_asm_select_section): Ditto. (avr_addr_space_convert): Ditto. (avr_emit_movmemhi): Ditto. (avr_nonconst_pointer_addrspace, avr_pgm_check_var_decl): Error if address space is outside of device flash. (avr_insert_attributes): Ditto. (avr_xload_libgcc_p): Use avr_current_device->n_flash instead of avr_current_arch->n_segments. Modified: trunk/gcc/ChangeLog trunk/gcc/config/avr/avr-c.c trunk/gcc/config/avr/avr-devices.c trunk/gcc/config/avr/avr-mcus.def trunk/gcc/config/avr/avr.c trunk/gcc/config/avr/avr.h trunk/gcc/doc/extend.texi ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/52261] [avr] Add support for AVR Xmega cores 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org ` (7 preceding siblings ...) 2012-02-28 8:53 ` gjl at gcc dot gnu.org @ 2012-02-28 9:14 ` gjl at gcc dot gnu.org 8 siblings, 0 replies; 10+ messages in thread From: gjl at gcc dot gnu.org @ 2012-02-28 9:14 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52261 Georg-Johann Lay <gjl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #9 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-28 09:11:29 UTC --- Closed: Basic XMEGA support seems to be complete now. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-02-28 9:12 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-02-15 12:33 [Bug target/52261] New: [avr] Add support for AVR Xmega cores gjl at gcc dot gnu.org 2012-02-15 12:36 ` [Bug target/52261] " gjl at gcc dot gnu.org 2012-02-15 13:16 ` gjl at gcc dot gnu.org 2012-02-20 4:33 ` fbi.sr at gmx dot de 2012-02-20 11:32 ` gjl at gcc dot gnu.org 2012-02-22 2:44 ` fbi.sr at gmx dot de 2012-02-23 20:13 ` gjl at gcc dot gnu.org 2012-02-24 16:29 ` gjl at gcc dot gnu.org 2012-02-28 8:53 ` gjl at gcc dot gnu.org 2012-02-28 9:14 ` 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).