This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
typedef struct { UNS_32 reg[2]; } arm_2_registers_t;
static inline arm_2_registers_t arm_2_registers_load( UNS_32 *src_addr_ptr ) { arm_2_registers_t result; __asm__ ( "ldmia %0, {%1,%2} \n\t" : "+r" (src_addr_ptr), "=r" (result.reg[0]), "=r" ( result.reg[1]) ); return( result ); }
That seems to work fine until the compiler decides to use registers for %1 and %2 that aren't in ascending order. I've examined the assembly constraints and I don't see anything obvious.
-- Bryce Schober
-- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |