Subject: Re: build failure on bootxx_msdos
To: Tom Spindler <dogcow@babymeat.com>
From: David Laight <david@l8s.co.uk>
List: current-users
Date: 12/02/2006 10:32:18
On Fri, Dec 01, 2006 at 04:46:10PM -0800, Tom Spindler wrote:
> I've just committed a fix to src/sys/lib/libsa/dosfs.c; here's the diff,
> so I don't have to type out the comment again:
>
> +#ifdef BOOTXX
> + /* due to __internal_memset_ causing all sorts of register spillage
> + (and being completely unoptimized for zeroing small amounts of
> + memory), if we hand-initialize the remaining members of f to zero,
> + the code size drops 68 bytes. This makes no sense, admittedly. */
> + f->offset = 0;
> + f->c = 0;
> +#else
> bzero(f, sizeof(DOS_FILE));
> +#endif
Gah - how on earth goes gcc manage to expand bzero to that many bytes!
I'll have to look!
I know I made ld.elf_so run faster by not using the builtin memcmp/strcmp
(can't remember which) but be calling a C function.
Also i386 the inlined code for memcpy() is seriously sub-optimal.
(you don't want to be doing the 'rep movsb' with cx 0/1/2/3)
David
--
David Laight: david@l8s.co.uk