Hi, On 1/7/19 3:59 PM, h...@zytor.com wrote: > On January 6, 2019 11:40:56 PM PST, Cao jin <caoj.f...@cn.fujitsu.com> wrote: >> According to objdump output of setup, function memset is not used in >> setup code. Currently, all usage of memset in setup come from macro >> definition of string.h. >> >> Signed-off-by: Cao jin <caoj.f...@cn.fujitsu.com> >> --- >> Compiled and booted under x86_64; compiled under i386. >> >> Questions: now there is 2 definition of memcpy, one lies in copy.S, >> another lies in string.h which is mapped to gcc builtin function. Do we >> still need 2 definition? Could we move the content of copy.S to >> boot/string.c? >> >> At first glance, the usage of string.{c.h} of setup is kind of >> confusing, >> they are also used in compressed/ and purgatory/ >> >> arch/x86/boot/copy.S | 15 --------------- >> 1 file changed, 15 deletions(-) >> >> diff --git a/arch/x86/boot/copy.S b/arch/x86/boot/copy.S >> index 15d9f74b0008..5157d08b0ff2 100644 >> --- a/arch/x86/boot/copy.S >> +++ b/arch/x86/boot/copy.S >> @@ -33,21 +33,6 @@ GLOBAL(memcpy) >> retl >> ENDPROC(memcpy) >> >> -GLOBAL(memset) >> - pushw %di >> - movw %ax, %di >> - movzbl %dl, %eax >> - imull $0x01010101,%eax >> - pushw %cx >> - shrw $2, %cx >> - rep; stosl >> - popw %cx >> - andw $3, %cx >> - rep; stosb >> - popw %di >> - retl >> -ENDPROC(memset) >> - >> GLOBAL(copy_from_fs) >> pushw %ds >> pushw %fs > > This is dependent on both gcc version and flags. >
Thanks for your info, but I still don't quite get your point. All files who has memset reference in setup will also #include "string.h", so how gcc version and flags will associate memset reference to the assembly function by force? Hope to get a little more details when you are convenient:)