lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 29 Apr 2009 16:00:51 -0400
From:	Jeff Garzik <jeff@...zik.org>
To:	"H. Peter Anvin" <hpa@...nel.org>
CC:	LKML <linux-kernel@...r.kernel.org>, x86@...nel.org
Subject: Re: [x86] Strange 64-bit put_user ?

H. Peter Anvin wrote:
> Jeff Garzik wrote:
>> In arch/x86/include/asm/uaccess.h, if !CONFIG_X86_32, we see
>>
>>> #define __put_user_x8(x, ptr, __ret_pu) \
>>>         ({ u64 __ret_pu; __put_user_x(8, x, ptr, __ret_pu);
>>> (int)__ret_pu; })
>> which was preceded by
>>
>>> #define __put_user_x(size, x, ptr, __ret_pu)                    \
>>>         asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
>>>                      :"0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
>>
>> My question, from an admitted inline asm newbie:
>>
>> Why is 32-bit register 'ebx' being used for a 64-bit put_user?
>>
>> And a dumb-question follow-up, probably easy, for any x86 expert:  why
>> are registers 'bl' and 'bx' not used for 8-bit and 16-bit put_user,
>> respectively?
>>
> 
> The answer is simply that gcc doesn't make a distinction between bl, bx,
> ebx, and rbx -- it considers it a single regioster which can contain an
> 8-, 16-, 32- or 64-bit number.  In particular, gcc can't use ah, bh, ch,
> and dh as independent registers at all.

So, it isn't really referring to 'ebx' register specifically, it is 
referring to the hardware register that contains 'ebx'.  Gotcha.

Thanks!

	Jeff




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ