summaryrefslogtreecommitdiffstats
path: root/sys/conf
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2004-08-16 07:55:06 +0000
committertjr <tjr@FreeBSD.org>2004-08-16 07:55:06 +0000
commit8a2532c4567e38e9bc8d8959387af72c4a855cee (patch)
tree8db1b1fe965caf91b81508b975442417a3f13b98 /sys/conf
parent4ba41b4c333176e4dd5368706f1bdbc11c9e6d86 (diff)
downloadFreeBSD-src-8a2532c4567e38e9bc8d8959387af72c4a855cee.zip
FreeBSD-src-8a2532c4567e38e9bc8d8959387af72c4a855cee.tar.gz
Add preliminary support for running 32-bit Linux binaries on amd64, enabled
with the COMPAT_LINUX32 option. This is largely based on the i386 MD Linux emulations bits, but also builds on the 32-bit FreeBSD and generic IA-32 binary emulation work. Some of this is still a little rough around the edges, and will need to be revisited before 32-bit and 64-bit Linux emulation support can coexist in the same kernel.
Diffstat (limited to 'sys/conf')
-rw-r--r--sys/conf/files.amd6435
-rw-r--r--sys/conf/options.amd641
2 files changed, 35 insertions, 1 deletions
diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64
index 0af15c0..4fad97d 100644
--- a/sys/conf/files.amd64
+++ b/sys/conf/files.amd64
@@ -7,7 +7,19 @@
# limitations in config: backslash-newline doesn't work in strings, and
# dependency lines other than the first are silently ignored.
#
-
+#
+linux32_genassym.o optional compat_linux32 \
+ dependency "$S/amd64/linux32/linux32_genassym.c" \
+ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
+ no-obj no-implicit-rule \
+ clean "linux32_genassym.o"
+#
+linux32_assym.h optional compat_linux32 \
+ dependency "$S/kern/genassym.sh linux32_genassym.o" \
+ compile-with "sh $S/kern/genassym.sh linux32_genassym.o > ${.TARGET}" \
+ no-obj no-implicit-rule before-depend \
+ clean "linux32_assym.h"
+#
ia32_genassym.o standard \
dependency "$S/compat/ia32/ia32_genassym.c" \
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
@@ -156,3 +168,24 @@ compat/freebsd32/freebsd32_syscalls.c optional ia32
compat/freebsd32/freebsd32_sysent.c optional ia32
compat/ia32/ia32_sysvec.c optional ia32
kern/imgact_elf32.c optional ia32
+#
+# Linux/i386 binary support
+#
+amd64/linux32/linux32_dummy.c optional compat_linux32
+amd64/linux32/linux32_locore.s optional compat_linux32 \
+ dependency "linux32_assym.h"
+amd64/linux32/linux32_machdep.c optional compat_linux32
+amd64/linux32/linux32_sysent.c optional compat_linux32
+amd64/linux32/linux32_sysvec.c optional compat_linux32
+compat/linux/linux_file.c optional compat_linux32
+compat/linux/linux_getcwd.c optional compat_linux32
+compat/linux/linux_ioctl.c optional compat_linux32
+compat/linux/linux_ipc.c optional compat_linux32
+compat/linux/linux_mib.c optional compat_linux32
+compat/linux/linux_misc.c optional compat_linux32
+compat/linux/linux_signal.c optional compat_linux32
+compat/linux/linux_socket.c optional compat_linux32
+compat/linux/linux_stats.c optional compat_linux32
+compat/linux/linux_sysctl.c optional compat_linux32
+compat/linux/linux_uid16.c optional compat_linux32
+compat/linux/linux_util.c optional compat_linux32
diff --git a/sys/conf/options.amd64 b/sys/conf/options.amd64
index 097b622..a383137 100644
--- a/sys/conf/options.amd64
+++ b/sys/conf/options.amd64
@@ -12,6 +12,7 @@ PMAP_SHPGPERPROC opt_pmap.h
# (see src/sys/conf/options), except for broken debugging options.
#IBCS2 opt_dontuse.h
#COMPAT_LINUX opt_dontuse.h
+COMPAT_LINUX32 opt_compat.h
#COMPAT_SVR4 opt_dontuse.h
#DEBUG_SVR4 opt_svr4.h
#NDISAPI opt_dontuse.h
OpenPOWER on IntegriCloud