Subject: Re: MACHINE_ARCH vs. OBJ_ARCH
To: Jonathan Stone <jonathan@DSG.Stanford.EDU>
From: Eduardo E. Horvath <eeh@one-o.com>
List: tech-toolchain
Date: 07/27/1998 09:12:53
On Sun, 26 Jul 1998, Jonathan Stone wrote:
> Think about what happens when we support 64-bit sparc binaries. Does
> that mean sparc64 becomes a new machine_arch? Todd and Eduardo seem to
> think so. Does that mean we need separate arch/{sparc,sparc64}
> directories everywhere? Does it mean CPP no longer predefines
> __sparc__ on a sparc64? What does that mean for package source that
> wants to compile sparc-specific C source that works in LP32 or LP64
> but just wants to test for "sparc"? What does the vendor environment do?
As a matter of fact, yes I do consider sparc64 a different
__MACHINE_ARCH__. The stack handling is different. The argument
passing conventions are different. The register widths are different.
The load/store instructions are different. The multiply/divide
instructions are different. The shift/branch/conditional move
instructions are different. In 64-bit libraries, all the assembly routines
would need to be re-written.
Even in 32-bit land it makes sense to separate the architectures. Much
better to issue a nice fast multiply than use multiply-step instructions.
More importantly, bcopy() can be re-coded to use block move instructions
for a huge performance increase. Without this sort of optimization, the
machines run dog-slow. Unfortunately, we don't have any mechanisms yet to
link in architecture specific libraries dynamically yet.
=========================================================================
Eduardo Horvath eeh@one-o.com
"I need to find a pithy new quote." -- me