Eric, the current romcc seems have problem to process "asm". Or bist cause the problem?
Regards
YH
In Failover.E
normal_image: asm("jmp __normal_image" : : "a" (bist) : ); cpu_reset: asm("jmp __cpu_reset" : : "a"(bist) : ); fallback_image:
will produce
Lfailover1063: /* main,failover.c:68.11 */ Lfailover1064: /* ,:0.0 */ /* unknown %eax */ /* unknown %ebx */ /* unknown %ecx */ /* unknown %edx */ #ASM
#NOT ASM
Old romcc result it right
Lfailover61: /* main,failover.c:21.28 */ /* main,failover.c:67.18 */ mov $0 , %eax #ASM jmp __normal_image #NOT ASM /* main,failover.c:68.11 */ Lfailover62: /* main,failover.c:21.28 */ /* main,failover.c:73.18 */ mov $0 , %eax #ASM jmp __cpu_reset #NOT ASM /* main,failover.c:74.16 */ Lfailover63: /* ,failover.c:82.1 */ Lfailover64: /* max inline depth 6 */
YhLu YhLu@tyan.com writes:
Eric, the current romcc seems have problem to process "asm". Or bist cause the problem?
The optimizer took a look at the asm realized no one used the output of it. And optimized the instruction away. Correct but annoying.
Just mark the asm as volatile and the code will work fine.
Eric