What does %P1 mean in gcc inline assembly?

Dave Tian dave.jing.tian at gmail.com
Fri Mar 4 10:59:33 EST 2016


This ‘P’ is used to make gcc happy and work.
Without ‘P’, this inline would be interpreted as:
leal $-512(%esp), %eax
With ‘P’, this inline is the thing we really want:
leal -512(%esp), %eax

Eventually, my gcc 4.9.2 does not compile with ‘P’ is missing. I am not sure if this is still the case for newer gcc (5/6). But you get the point.

-daveti


> On Mar 4, 2016, at 7:36 AM, 张云 <zyunone at 163.com> wrote:
> 
> Hi
> 
> In /arch/x86/boot/main.c  (http://lxr.free-electrons.com/source/arch/x86/boot/main.c <http://lxr.free-electrons.com/source/arch/x86/boot/main.c>) ,
> 
> In the function init_heap,
> asm("leal %P1(%%esp),%0"
> 122 <http://lxr.free-electrons.com/source/arch/x86/boot/source/arch/x86/boot/main.c#L122>                     : "=r" (stack_end) : "i" (-STACK_SIZE <http://lxr.free-electrons.com/source/arch/x86/boot/ident?i=STACK_SIZE>));
>  What does the ‘%P1’ mean in the inline assembly above ?
> 
> Thanks !
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20160304/f4d2f5de/attachment-0001.html 


More information about the Kernelnewbies mailing list