On Mon, 12 Jun 2006, Glen Kriekenbeck wrote:
Hi all,
I'm working with an ISV who asks:
We notice that the system calls are coded differently in the 32 and 64
bit versions of the OS. The 32 version uses sysenter which the 64 uses
syscall. There also seem to be 2 different 32-bit versions in the
/usr/lib/libc: in libc_hwcap1.so.1 and libc_hwcap2.so.1
Not to forget the "generic" libc (which uses lcall $0x27,0 in S10 FCS and
int 0x91 in later S10 updates and in OpenSolaris/Nevada).
Is this expected to remain the same going forward? I read in some
forum that there may be plans to consolidate the 2 32 bit versions. Is
this true? If so, what is the consolidated solution and when can we
expect it? Will it be patched in Sol 10 or will it only be available
in Sol 11?
Is such a change in the works? I'd appreciate a pointer to any further
information about this.
Thanks!
glen
The libc_hwcap mechanism is already in Solaris 10 (x86 and amd64).
Whether the SPARC and x86 mechanisms (libc_psr and libc_hwcap) will
eventually be merged into one 'common' method for "optimally targeting the
host CPU" hasn't shown clearly in my palantir yet...
Why should we "consolidate" the three versions ? They're built from the
same source - just using different compiler optimization switches, and a
different set of syscall stubs. The whole _point_ of libc_hwcap is to
optimize _all of_ libc to a given processor's capabilities, not just the
method used for performing syscalls.
As said, the source is, apart from the (macroized) syscall, identical for
all x86 libc versions anyway. It's just the build mechanism which creates
the "tailored" variants.
FrankH.
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code