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
participants (2)
-
ebiederman@lnxi.com -
YhLu