[Bug inline-asm/64733] MOV instruction error when inline assembly code is used in a C function

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 22 19:50:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64733

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to aji from comment #2)
> The issue is with this line of code:
> asm volatile("mov X1, #0x10000003");
> 
> If I modify the mov instruction to take a variable input it works.
> 
> val = 0x10000003;
> asm volatile("mov X1, %0":"=r"(val));
> 
> Just want to understand why is this?

Please read the ARM ARM.  0x10000000 works as it can be used with movw while
0x10000003 there is no one instruction which works.  If you want 0x10000003,
you need to use two instructions movz and movk.

There is no GCC bug here.



More information about the Gcc-bugs mailing list