Request for review/comments: 32-bit compat for non-x86
kostikbel at gmail.com
Wed Mar 10 11:46:17 UTC 2010
On Tue, Mar 09, 2010 at 10:14:27PM -0600, Nathan Whitehorn wrote:
> The patch at http://people.freebsd.org/~nwhitehorn/compat_freebsd32.diff
> (pre-generated freebsd32 syscalls stuff is included, which will be done
> in two steps on commit) provides groundwork for supporting 32-bit
> compatibility for 64-bit MIPS and PowerPC systems. It has been tested on
> amd64 and powerpc64, and compile-tested on ia64. There are two main
> parts to the patch:
> 1) COMPAT_IA32 is renamed COMPAT_FREEBSD32, in analogy to
> COMPAT_LINUX32, etc. This requires updating kernel configurations, but
> is less painful than filling machine-independent bits of the kernel with
> #if defined(COMPAT_IA32) || defined(COMPAT_PPC32) ||
> defined(COMPAT_MIPS32) || ..., and is no less descriptive than the old name.
> 2) Modifications to the freebsd32 compat layer to support big-endian
> I would appreciate any comments, bugs, or test results on ia64.
--- sys/kern/imgact_elf.c (revision 204681)
+++ sys/kern/imgact_elf.c (working copy)
@@ -75,7 +75,7 @@
-#if defined(COMPAT_IA32) && __ELF_WORD_SIZE == 32
+#if (defined(__amd64__) || defined(__ia64__)) && __ELF_WORD_SIZE == 32
probably should be changed ? How are struct reg32 for !ia32 case is
brought into the imgact_elf ? Can it be unified for ia32 case ?
(Similar fragment is present in sys_process.c at least).
I do not understand how +#if !defined(PAD64_REQUIRED) && defined(__powerpc__)
etc lines are generated.
You may want to change sysent->sv_flag SV_IA32 to SV_FREEBSD32, or add
SV_FREEBSD32. You might want to review SV_IA32 usage, if any.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-amd64/attachments/20100310/8508c91f/attachment.pgp
More information about the freebsd-amd64