From a1293322df7d7dd3ea7e03fac956a591a635c660 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 25 Aug 2008 23:35:47 +0000 Subject: [PATCH] AMD64 Support: * Change the sysmsg fds[2] array from int to long and use the same double-register return trick that i386 uses for pipe(fds), and a few other specialized system calls. --- sys/sys/sysmsg.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/sys/sysmsg.h b/sys/sys/sysmsg.h index cc59360926..50435ab07a 100644 --- a/sys/sys/sysmsg.h +++ b/sys/sys/sysmsg.h @@ -1,7 +1,7 @@ /* * SYS/SYSMSG.H * - * $DragonFly: src/sys/sys/sysmsg.h,v 1.11 2006/10/20 17:02:13 dillon Exp $ + * $DragonFly: src/sys/sys/sysmsg.h,v 1.12 2008/08/25 23:35:47 dillon Exp $ */ #ifndef _SYS_SYSMSG_H_ @@ -17,6 +17,9 @@ * The sysmsg holds the kernelland version of a system call's arguments * and return value. It typically preceeds the syscall arguments in sysunion * (see sys/sysunion.h). + * + * WARNING: fds must be long so it translates to two 64 bit registers + * on 64 bit architectures. */ union sysunion; @@ -25,7 +28,7 @@ struct sysmsg { void *resultp; /* misc pointer data or result */ int result; /* standard 'int'eger result */ long lresult; /* long result */ - int fds[2]; /* two int bit results */ + long fds[2]; /* double result */ __int32_t result32; /* 32 bit result */ __int64_t result64; /* 64 bit result */ __off_t offset; /* off_t result */ -- 2.41.0