The issue is easy to fix but may have other side effects from the view of compiler. Thus makes it difficult to get accepted by gcc upstream. Meanwhile may I ask you to rewrite your code in below way which is more friend to compiler and will give you better code size:
The issue is easy to fix but may have other side effects from the view of compiler. Thus makes it difficult to get accepted by gcc upstream. Meanwhile may I ask you to rewrite your code in below way which is more friend to compiler and will give you better code size:
typedef struct st
{
uint32_t a0;
uint32_t a1;
uint32_t a2;
uint32_t a3;
uint32_t a4;
uint32_t a5;
uint32_t a6;
uint32_t a7;
uint32_t a8;
uint32_t a9;
}Device;
void __attribute_ _((noreturn) ) Reset_Handler()
setRegsWord( 0x48000000, 8, 0xc000000);
setRegsWord( 0x48000000, 4, 0);
setRegsWord( 0x48000000, 0, 0xaaa8f3a4);
setRegsWord( 0x48000000, 12, 0x64000000);
setRegsWord( 0x48000000, 32, 0x7700);
setRegsWord( 0x48000000, 36, 0x0002a770);
setRegsWord( 0x48000000, 24, 0x20000);
{
#if 0
// Configure the external pins immediately as some component may depend on them
#endif
volatile Device *p = (volatile Device *)(0x48000000);
p->a2 = 0xc0000000;
p->a1 = 0;
p->a0 = 0xaaa8f3a4;
p->a3 = 0x64000000;
p->a8 = 0x7700;
p->a9 = 0x0002a770;
p->a6 = 0x20000;
do {} while(1);
}