From: "H. Peter Anvin" <hpa@zytor.com>
To: "H. Peter Anvin" <hpa@zytor.com>,
linux-kernel@vger.kernel.org, klibc@zytor.com
Subject: Re: [klibc 04/31] alpha support for klibc
Date: Wed, 28 Jun 2006 08:51:56 -0700 [thread overview]
Message-ID: <44A2A59C.5080903@zytor.com> (raw)
In-Reply-To: <20060628154320.GA18511@twiddle.net>
Richard Henderson wrote:
> On Tue, Jun 27, 2006 at 10:17:04PM -0700, H. Peter Anvin wrote:
>> +# Special CFLAGS for the divide code
>> +DIVCFLAGS = $(KLIBCREQFLAGS) $(KLIBCARCHREQFLAGS) \
>> + -O3 -fomit-frame-pointer -fcall-saved-1 -fcall-saved-2 \
>> + -fcall-saved-3 -fcall-saved-4 -fcall-saved-5 -fcall-saved-6 \
>> + -fcall-saved-7 -fcall-saved-8 -ffixed-15 -fcall-saved-16 \
>> + -fcall-saved-17 -fcall-saved-18 -fcall-saved-19 -fcall-saved-20 \
>> + -fcall-saved-21 -fcall-saved-22 -ffixed-23 -fcall-saved-24 \
>> + -ffixed-25 -ffixed-27
>
> These routines absolutely cannot be written in C. The return value
> goes in a different register, which you cannot modify via compiler
> flags. Please use the hand-coded assembly from linux/arch/alpha/lib/.
>
Funny, we had this discussion a couple of years ago...
What the above does is generate a calling convention with the right
number of (various types of) registers. Then the Makefile swaps the
registers that the compiler outputs. It's a bit of a hack, but it's
reliable and works. The resulting code isn't as compact at divide.S,
though.
However, I've tried to keep the code under the BSD license, mostly for
the benefit of the standalone klibc version (static linkage being the
norm, after all); so I don't want to crib kernel code unless the owner
consents to relicensing. I have cribbed some NetBSD code in some
places, though.
-hpa
next prev parent reply other threads:[~2006-06-28 15:52 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-28 5:17 [klibc 00/31] klibc as a historyless patchset (updated and reorganized) H. Peter Anvin
2006-06-28 5:17 ` [klibc 01/31] Add klibc/kinit to MAINTAINERS file H. Peter Anvin
2006-06-28 5:17 ` [klibc 02/31] Main Makefile changes for klibc H. Peter Anvin
2006-06-28 5:17 ` [klibc 03/31] Core klibc code H. Peter Anvin
2006-06-28 5:17 ` [klibc 04/31] alpha support for klibc H. Peter Anvin
2006-06-28 15:43 ` Richard Henderson
2006-06-28 15:51 ` H. Peter Anvin [this message]
2006-06-28 5:17 ` [klibc 05/31] arm " H. Peter Anvin
2006-06-28 5:17 ` [klibc 06/31] cris " H. Peter Anvin
2006-06-28 5:17 ` [klibc 07/31] i386 " H. Peter Anvin
2006-06-28 7:37 ` Jan Engelhardt
2006-06-28 15:33 ` H. Peter Anvin
2006-06-28 16:44 ` H. Peter Anvin
2006-06-29 0:14 ` Roman Zippel
2006-06-29 0:45 ` H. Peter Anvin
2006-06-29 23:43 ` Roman Zippel
2006-06-29 23:54 ` H. Peter Anvin
2006-06-30 0:23 ` Roman Zippel
2006-06-30 1:28 ` [klibc] " Aaron Griffin
2006-06-30 13:56 ` Jan Engelhardt
2006-06-28 5:17 ` [klibc 08/31] ia64 " H. Peter Anvin
2006-06-28 5:17 ` [klibc 09/31] m32r " H. Peter Anvin
2006-06-28 5:17 ` [klibc 10/31] m68k " H. Peter Anvin
2006-06-28 5:17 ` [klibc 11/31] mips " H. Peter Anvin
2006-06-28 5:17 ` [klibc 12/31] mips64 " H. Peter Anvin
2006-06-28 5:17 ` [klibc 13/31] parisc " H. Peter Anvin
2006-06-28 5:17 ` [klibc 14/31] ppc " H. Peter Anvin
2006-06-28 5:17 ` [klibc 15/31] ppc64 " H. Peter Anvin
2006-06-28 5:17 ` [klibc 16/31] s390 " H. Peter Anvin
2006-06-28 5:17 ` [klibc 17/31] sh " H. Peter Anvin
2006-06-28 5:17 ` [klibc 18/31] sparc " H. Peter Anvin
2006-06-28 5:17 ` [klibc 19/31] sparc64 " H. Peter Anvin
2006-06-28 5:17 ` [klibc 20/31] x86_64 " H. Peter Anvin
2006-06-28 5:17 ` [klibc 21/31] Simple test suite " H. Peter Anvin
2006-06-28 5:17 ` [klibc 22/31] zlib " H. Peter Anvin
2006-06-28 5:17 ` [klibc 23/31] kinit: replacement for in-kernel do_mount, ipconfig, nfsroot H. Peter Anvin
2006-06-28 5:17 ` [klibc 24/31] klibc basic build infrastructure H. Peter Anvin
2006-06-28 5:17 ` [klibc 25/31] Miscellaneous utilities for klibc H. Peter Anvin
2006-06-28 5:17 ` [klibc 26/31] dash - a small POSIX shell " H. Peter Anvin
2006-06-28 5:17 ` [klibc 27/31] A port of gzip to klibc H. Peter Anvin
2006-06-28 5:17 ` [klibc 28/31] sparc64: transmit arch-specific options to kinit via /arch.cmd H. Peter Anvin
2006-06-28 5:17 ` [klibc 29/31] sparc32: transfer arch-specific options to /arch.cmd H. Peter Anvin
2006-06-28 5:17 ` [klibc 30/31] Remove in-kernel resume-from-disk invocation code H. Peter Anvin
2006-07-05 23:40 ` Nigel Cunningham
2006-07-05 23:58 ` Joshua Hudson
2006-07-06 0:11 ` H. Peter Anvin
2006-07-06 0:37 ` Nigel Cunningham
2006-07-06 0:54 ` H. Peter Anvin
2006-07-06 1:45 ` Nigel Cunningham
2006-07-06 2:18 ` Nigel Cunningham
2006-07-06 3:11 ` H. Peter Anvin
2006-07-06 3:28 ` Nigel Cunningham
2006-07-06 10:26 ` Pavel Machek
[not found] ` <200607061028.k66AS8UB012207@smtp.micromuse.com>
2006-07-06 10:58 ` IBM spam Re: " Pavel Machek
2006-07-06 13:02 ` Sean Young
2006-07-06 8:31 ` [klibc] " maximilian attems
2006-07-06 8:37 ` H. Peter Anvin
2006-06-28 5:17 ` [klibc 31/31] Remove in-kernel root-mounting code H. Peter Anvin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44A2A59C.5080903@zytor.com \
--to=hpa@zytor.com \
--cc=klibc@zytor.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox