> On Mar 4, 2016, at 11:59 PM, Dave Tian <[email protected]> wrote:
> 
> 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
> 

Thank you for your detailed answer !

By the way, If someone have the problems alike, I suggest them to write some 
inline assembly and check the compiler’s assembly output.

> 
>> On Mar 4, 2016, at 7:36 AM, 张云 <[email protected] <mailto:[email protected]>> 
>> 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
>> [email protected] <mailto:[email protected]>
>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> 
> _______________________________________________
> Kernelnewbies mailing list
> [email protected]
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to