Jan Engelhardt wrote: > On Jul 9 2007 19:51, H. Peter Anvin wrote: >> strcmp(), memcpy(), memset(), as well as routines to copy to and from >> other segments (as pointed to by fs and gs). > > I wonder, strcmp() is the only one not done in assembler. > Is there a particular reason? (Or the other way around, why > is memcpy/memset not C.) The opcode is rep[n]z cmps[bl]; BZZT, wrong. repz cmpsb is memcmp(), not strcmp(). The reason is simply that memset and memcpy are in assembly is that they are simple wrappers around string instructions, plus the need to provide the other-segment copy functions -- it was cleaner to do them as an assembly file. This is not the case for strcmp(), nor for any other string functions that may want to be used in the future. > Would perhaps using __builtin_memset > and whatever GCC provides also work in 16-bit mode (would save > implementing it again). Nope. The builtins not only vary between gcc versions, but they also have a nasty tendency to generate calls to library functions, sometimes libgcc functions. Hence -ffreestanding. >> +/* >> + * arch/i386/boot/string.c >> + * >> + * Very basic string functions >> + */ >> + >> +#include "boot.h" >> +#include <linux/edd.h> > > What's edd good for here? It's a copy-and-paste accident; already fixed in the tree. -hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [x86 setup 16/33] String-handling functions for the new x86 setup code.
- From: Segher Boessenkool <[email protected]>
- Re: [x86 setup 16/33] String-handling functions for the new x86 setup code.
- References:
- x86 setup code rewrite in C
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 01/33] x86 setup: MAINTAINERS: formally take responsibility for the i386 boot code
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 02/33] hd.c: remove BIOS/CMOS queries
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 03/33] include/asm-i386/boot.h: This is <asm/boot.h>, not <linux/boot.h>
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 04/33] Unify the CPU features vectors between i386 and x86-64
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 05/33] Change CONFIG_X86_MINIMUM_CPU_MODEL to CONFIG_X86_MINIMUM_CPU_FAMILY
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 06/33] Clean up struct screen_info (<linux/screen_info.h>)
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 07/33] Use a new CPU feature word to cover all Intel features that are spread around
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 08/33] Define zero-page offset 0x1e4 as a scratch field, and use it
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 09/33] Make definitions for struct e820entry and struct e820map consistent
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 10/33] Make struct boot_params a real structure, and remove obsolete fields
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 11/33] x86-64: add CONFIG_PHYSICAL_ALIGN for consistency with i386
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 12/33] x86-64: add symbolic constants for the boot segment selectors
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 13/33] Header file to produce 16-bit code with gcc
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 14/33] Top header file for new x86 setup code
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 15/33] Simple bitops for the new x86 setup code.
- From: "H. Peter Anvin" <[email protected]>
- [x86 setup 16/33] String-handling functions for the new x86 setup code.
- From: "H. Peter Anvin" <[email protected]>
- Re: [x86 setup 16/33] String-handling functions for the new x86 setup code.
- From: Jan Engelhardt <[email protected]>
- x86 setup code rewrite in C
- Prev by Date: Re: [x86 setup 20/33] Console-writing code for the new x86 setup code
- Next by Date: [git patches] libata updates
- Previous by thread: Re: [x86 setup 16/33] String-handling functions for the new x86 setup code.
- Next by thread: Re: [x86 setup 16/33] String-handling functions for the new x86 setup code.
- Index(es):