From b8177960d4e376011adf379b87d8b8ba051c0fd0 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Sun, 13 Jun 2010 22:05:27 -0400 Subject: [PATCH] arm darwin port make things buildable on arm darwin Change-Id: I88af2b82e9ed356fd57aa8f05dfee71d7fa6cd8a Reviewed-on: http://gerrit.openafs.org/2153 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afsd/afsd.c | 12 +- src/config/afs_sysnames.h | 1 + src/config/param.arm_darwin_100.h | 257 ++++++++++++++++++++++++++++++ src/des/conf-darwin.h | 2 +- src/des/make_p.c | 2 +- src/des/misc.c | 2 +- src/lwp/Makefile.in | 19 ++- src/rx/rx_getaddr.c | 2 + src/util/uuid.c | 2 +- src/viced/afsfileprocs.c | 2 + src/vol/devname.c | 2 +- 11 files changed, 289 insertions(+), 14 deletions(-) create mode 100644 src/config/param.arm_darwin_100.h diff --git a/src/afsd/afsd.c b/src/afsd/afsd.c index 5bc775877..ffbfe2562 100644 --- a/src/afsd/afsd.c +++ b/src/afsd/afsd.c @@ -103,7 +103,7 @@ #include #endif -#ifdef HAVE_SYS_MOUNT_H +#if defined(HAVE_SYS_MOUNT_H) && !defined(AFS_ARM_DARWIN_ENV) #include #endif @@ -172,12 +172,15 @@ void set_staticaddrs(void); #include #include +#ifndef AFS_ARM_DARWIN_ENV #include #include static io_connect_t root_port; static IONotificationPortRef notify; static io_object_t iterator; +#endif + static CFRunLoopSourceRef source; static int event_pid; @@ -342,7 +345,7 @@ static void fork_rx_syscall(); #endif static void fork_syscall(); -#ifdef AFS_DARWIN_ENV +#if defined(AFS_DARWIN_ENV) && !defined(AFS_ARM_DARWIN_ENV) static void afsd_sleep_callback(void * refCon, io_service_t service, natural_t messageType, void * messageArgument ) @@ -423,10 +426,11 @@ afsd_event_cleanup(int signo) { CFRunLoopRemoveSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode); CFRelease (source); +#ifndef AFS_ARM_DARWIN_ENV IODeregisterForSystemPower(&iterator); IOServiceClose(root_port); IONotificationPortDestroy(notify); - +#endif exit(0); } @@ -437,6 +441,7 @@ afsd_install_events(void) SCDynamicStoreContext ctx = {0}; SCDynamicStoreRef store; +#ifndef AFS_ARM_DARWIN_ENV root_port = IORegisterForSystemPower(0,¬ify,afsd_sleep_callback,&iterator); if (root_port) { @@ -483,6 +488,7 @@ afsd_install_events(void) CFRelease (store); } +#endif if (source != NULL) { CFRunLoopAddSource (CFRunLoopGetCurrent(), diff --git a/src/config/afs_sysnames.h b/src/config/afs_sysnames.h index a0b680c02..1476140a1 100644 --- a/src/config/afs_sysnames.h +++ b/src/config/afs_sysnames.h @@ -66,6 +66,7 @@ #define SYS_NAME_ID_ppc64_darwin_100 513 #define SYS_NAME_ID_x86_darwin_100 514 #define SYS_NAME_ID_amd64_darwin_100 515 +#define SYS_NAME_ID_arm_darwin_100 516 #define SYS_NAME_ID_next_mach20 601 #define SYS_NAME_ID_next_mach30 602 diff --git a/src/config/param.arm_darwin_100.h b/src/config/param.arm_darwin_100.h new file mode 100644 index 000000000..21f98d060 --- /dev/null +++ b/src/config/param.arm_darwin_100.h @@ -0,0 +1,257 @@ +#ifndef UKERNEL +/* This section for kernel libafs compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_ENV 1 +#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */ +#define AFS_64BIT_CLIENT 1 +#define AFS_64BIT_IOPS_ENV 1 +#if defined(__ppc__) +#define AFS_PPC_ENV 1 +#elif defined(__i386__) || defined(__amd64__) +#define AFS_X86_ENV 1 +#elif defined(__arm__) +#define AFS_ARM_ENV 1 +#define AFS_ARM_DARWIN_ENV 1 +#else +#error Unsupported architecture +#endif +#ifdef __amd64__ +#define AFS_64BITUSERPOINTER_ENV 1 +#endif +#define AFS_64BIT_SIZEOF 1 /* seriously? */ +#include + +#define AFS_DARWIN_ENV +#define AFS_DARWIN70_ENV +#define AFS_DARWIN80_ENV +#define AFS_DARWIN90_ENV +#define AFS_DARWIN100_ENV +#undef AFS_NONFSTRANS +#define AFS_NONFSTRANS +#define AFS_SYSCALL 230 +#define AFS_NAMEI_ENV 1 +#define DARWIN_REFBASE 3 +#define AFS_WARNUSER_MARINER_ENV 1 +#define AFS_CACHE_VNODE_PATH +#define NEED_IOCTL32 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS "afs" + +/* Machine / Operating system information */ +#if defined(__ppc__) +#define sys_ppc_darwin_12 1 +#define sys_ppc_darwin_13 1 +#define sys_ppc_darwin_14 1 +#define sys_ppc_darwin_60 1 +#define sys_ppc_darwin_70 1 +#define sys_ppc_darwin_80 1 +#define sys_ppc_darwin_90 1 +#define sys_ppc_darwin_100 1 +#define SYS_NAME "ppc_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_ppc_darwin_100 +#define AFSBIG_ENDIAN 1 +#elif defined(__ppc64__) +#define sys_ppc_darwin_12 1 +#define sys_ppc_darwin_13 1 +#define sys_ppc_darwin_14 1 +#define sys_ppc_darwin_60 1 +#define sys_ppc_darwin_70 1 +#define sys_ppc_darwin_80 1 +#define sys_ppc_darwin_90 1 +#define sys_ppc_darwin_100 1 +#define sys_ppc64_darwin_100 1 +#define SYS_NAME "ppc64_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_ppc64_darwin_100 +#define AFSBIG_ENDIAN 1 +#elif defined(__i386__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_90 1 +#define sys_x86_darwin_100 1 +#define SYS_NAME "x86_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_x86_darwin_100 +#define AFSLITTLE_ENDIAN 1 +#elif defined(__amd64__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_90 1 +#define sys_x86_darwin_100 1 +#define sys_amd64_darwin_100 1 +#define SYS_NAME "amd64_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_amd64_darwin_100 +#define AFSLITTLE_ENDIAN 1 +#elif defined(__arm__) +#define sys_arm_darwin_100 1 +#define SYS_NAME "arm_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_arm_darwin_100 +#define AFSLITTLE_ENDIAN 1 +#else +#error Unsupported architecture +#endif +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ + +#define AFS_GCPAGS 0 +#define RXK_LISTENER_ENV 1 + +#define RTM_NEWADDR 0xc /* address being added to iface */ +#define RTM_IFINFO 0xe /* iface going up/down etc. */ +#define RTAX_NETMASK 2 /* netmask sockaddr present */ +#define RTAX_IFA 5 /* interface addr sockaddr present */ +#define RTAX_MAX 8 /* size of array to allocate */ + +struct rt_addrinfo { + int rti_addrs; + struct sockaddr *rti_info[RTAX_MAX]; +}; +#ifdef KERNEL +#undef MACRO_BEGIN +#undef MACRO_END +#include +#define AFS_GLOBAL_SUNLOCK 1 +#define AFS_VFS34 1 /* What is VFS34??? */ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES CLBYTES +#define osi_GetTime(x) microtime(x) +#define AFS_KALLOC(x) _MALLOC(x, M_TEMP, M_WAITOK) +#define AFS_KFREE(x,y) _FREE(x,M_TEMP) +#define v_count v_usecount +#define v_vfsp v_mount +#define vfs_bsize mnt_stat.f_bsize +#define vfs_fsid mnt_stat.f_fsid +#define va_nodeid va_fileid +#define vfs_vnodecovered mnt_vnodecovered +#define direct dirent + +#define BIND_8_COMPAT + +#endif +#endif /* AFS_PARAM_H */ + +#else /* !defined(UKERNEL) */ + +/* This section for user space compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_ENV 1 +#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */ +#if defined(__ppc__) +#define AFS_PPC_ENV 1 +#elif defined(__i386__) || defined(__amd64__) +#define AFS_X86_ENV 1 +#elif defined(__arm__) +#define AFS_ARM_ENV 1 +#define AFS_ARM_DARWIN_ENV 1 +#else +#error Unsupported architecture +#endif +#ifdef __amd64__ +#define AFS_64BITUSERPOINTER_ENV 1 +#endif + +#include +#define AFS_USERSPACE_ENV +#define AFS_USR_DARWIN_ENV +#define AFS_USR_DARWIN70_ENV +#define AFS_USR_DARWIN80_ENV +#define AFS_USR_DARWIN90_ENV +#define AFS_USR_DARWIN100_ENV +#undef AFS_NONFSTRANS +#define AFS_NONFSTRANS +#define AFS_SYSCALL 230 +#define DARWIN_REFBASE 0 +#define AFS_WARNUSER_MARINER_ENV 1 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS "afs" + +/* Machine / Operating system information */ +#if defined(__ppc__) +#define sys_ppc_darwin_12 1 +#define sys_ppc_darwin_13 1 +#define sys_ppc_darwin_14 1 +#define sys_ppc_darwin_60 1 +#define sys_ppc_darwin_70 1 +#define sys_ppc_darwin_80 1 +#define sys_ppc_darwin_90 1 +#define sys_ppc_darwin_100 1 +#define SYS_NAME "ppc_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_ppc_darwin_100 +#define AFSBIG_ENDIAN 1 +#elif defined(__i386__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_100 1 +#define SYS_NAME "x86_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_x86_darwin_100 +#define AFSLITTLE_ENDIAN 1 +#elif defined(__amd64__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_100 1 +#define sys_amd64_darwin_100 1 +#define SYS_NAME "amd64_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_amd64_darwin_100 +#define AFSLITTLE_ENDIAN 1 +#elif defined(__arm__) +#define sys_arm_darwin_100 1 +#define SYS_NAME "arm_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_arm_darwin_100 +#define AFSLITTLE_ENDIAN 1 +#else +#error Unsupported architecture +#endif +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ + +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE + +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ +#define RXK_LISTENER_ENV 1 + +#define AFS_VFS34 1 /* What is VFS34??? */ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define VATTR_NULL usr_vattr_null + +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif + +#define BIND_8_COMPAT +#endif /* AFS_PARAM_H */ + +#endif /* !defined(UKERNEL) */ diff --git a/src/des/conf-darwin.h b/src/des/conf-darwin.h index f686e4660..bad6006af 100644 --- a/src/des/conf-darwin.h +++ b/src/des/conf-darwin.h @@ -3,7 +3,7 @@ #undef BSDUNIX #if defined(__ppc__) || defined(__ppc64__) #define MSBFIRST -#elif defined(__i386__) || defined(__amd64__) +#elif defined(__i386__) || defined(__amd64__) || defined(__arm__) #define LSBFIRST #else #error "MSBFIRST or LSBFIRST undefined" diff --git a/src/des/make_p.c b/src/des/make_p.c index d430679e6..9dc954570 100644 --- a/src/des/make_p.c +++ b/src/des/make_p.c @@ -38,7 +38,7 @@ gen(FILE * stream) fprintf(stream, " P_temp_p = (unsigned char *) &P_temp;\n"); #ifdef AFS_DARWIN80_ENV - fprintf(stream, "#if defined(__i386__) || defined(__amd64__)\n"); + fprintf(stream, "#if defined(__i386__) || defined(__amd64__) || defined(__arm__)\n"); fprintf(stream, " R2 = P_prime[0][*P_temp_p++];\n"); fprintf(stream, " R2 |= P_prime[1][*P_temp_p++];\n"); fprintf(stream, " R2 |= P_prime[2][*P_temp_p++];\n"); diff --git a/src/des/misc.c b/src/des/misc.c index f39d2d60d..be800f254 100644 --- a/src/des/misc.c +++ b/src/des/misc.c @@ -271,7 +271,7 @@ swap_long_bytes_bit_number(afs_uint32 x) #if !defined(KERNEL) && defined(AFS_DARWIN80_ENV) char *_darwin_whichstr[] = { "#if defined(__ppc__) || defined(__ppc64__)\n", - "#elif defined(__i386__) || defined(__amd64__)\n", + "#elif defined(__i386__) || defined(__amd64__) || defined(__arm__)\n", "#else\n#error architecture unsupported\n#endif\n" }; int _darwin_which = 1; diff --git a/src/lwp/Makefile.in b/src/lwp/Makefile.in index 5821729b8..03b6a94f1 100644 --- a/src/lwp/Makefile.in +++ b/src/lwp/Makefile.in @@ -73,38 +73,45 @@ process.o : process.s process.i386.s process.c lwp.o $(RM) -f process.o ; \ CURRENTBUILDARCH="${ARCHFLAGS}"; \ if [ -z "$${CURRENTBUILDARCH}" ] ; then \ - CURRENTBUILDARCH=`$(CC) -dM -E -xc /dev/null | grep 'ppc\|i386\|x86_64'`; \ + CURRENTBUILDARCH=`$(CC) -dM -E -xc /dev/null | grep 'ppc\|i386\|x86_64\|arm'`; \ fi; \ ppc=`echo $${CURRENTBUILDARCH} | grep -q ppc && echo process.ppc.o` ; \ i386=`echo $${CURRENTBUILDARCH} | grep -q i386 && echo process.i386.o` ; \ amd64=`echo $${CURRENTBUILDARCH} | grep -q x86_64 && echo process.amd64.o` ; \ - if [ -z "$${ppc}" -a -z "$${i386}" -a -z "$${amd64}" ] ; then \ + arm=`echo $${CURRENTBUILDARCH} | grep -q arm && echo process.arm.o` ; \ + if [ -z "$${ppc}" -a -z "$${i386}" -a -z "$${amd64}" -a -z "$${arm}" ] ; then \ if [ `arch` = ppc ] ; then \ ppc=yes ; \ else \ i386=yes ; \ fi ; \ fi ; \ + if [ -n "$${arm}" ] ; then \ + $(CC) ${LWP_DBG} ${LWP_OPTMZ} -c -arch armv6 -I${TOP_INCDIR} ${srcdir}/process.c -o "$${arm}" ; \ + if [ -z "$${i386}" -a -z "$${amd64}" -a -z "$${ppc}" ] ; then \ + ${MV} "$${arm}" process.o ; \ + fi ; \ + fi ; \ if [ -n "$${ppc}" ] ; then \ $(CC) ${LWP_DBG} ${LWP_OPTMZ} -c -arch ppc -I${TOP_INCDIR} ${srcdir}/process.s -o "$${ppc}" ; \ - if [ -z "$${i386}" -a -z "$${amd64}" ] ; then \ + if [ -z "$${i386}" -a -z "$${amd64}" -a -z "$${arm}" ] ; then \ ${MV} "$${ppc}" process.o ; \ fi ; \ fi ; \ if [ -n "$${i386}" ] ; then \ $(CC) -x assembler-with-cpp -c -arch i386 -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.i386.s -o "$${i386}" ; \ - if [ -z "$${ppc}" -a -z "$${amd64}" ] ; then \ + if [ -z "$${ppc}" -a -z "$${amd64}" -a -z "$${arm}" ] ; then \ ${MV} "$${i386}" process.o ; \ fi ; \ fi ; \ if [ -n "$${amd64}" ] ; then \ $(CC) -x assembler-with-cpp -c -arch x86_64 -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.amd64.s -o "$${amd64}" ; \ - if [ -z "$${ppc}" -a -z "$${i386}" ] ; then \ + if [ -z "$${ppc}" -a -z "$${i386}" -a -z "$${arm}" ] ; then \ ${MV} "$${amd64}" process.o ; \ fi ; \ fi ; \ if [ ! -f process.o ] ; then \ - lipo -create $${amd64} $${i386} $${ppc} -output process.o ;\ + lipo -create $${amd64} $${i386} $${ppc} $${arm} -output process.o ;\ fi ;; \ i386_*bsd*) \ cp ${srcdir}/process.i386.s process.S ; \ diff --git a/src/rx/rx_getaddr.c b/src/rx/rx_getaddr.c index 928ae17c9..9a5104da7 100644 --- a/src/rx/rx_getaddr.c +++ b/src/rx/rx_getaddr.c @@ -22,7 +22,9 @@ #include #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) #include +#ifndef AFS_ARM_DARWIN_ENV #include +#endif #include #endif diff --git a/src/util/uuid.c b/src/util/uuid.c index fc29af4d4..9cd10e36a 100644 --- a/src/util/uuid.c +++ b/src/util/uuid.c @@ -80,7 +80,7 @@ #endif #include #include -#if !defined(AFS_NT40_ENV) && !defined(AFS_LINUX20_ENV) +#if !defined(AFS_NT40_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_ARM_DARWIN_ENV) #include #endif #include "afsutil.h" diff --git a/src/viced/afsfileprocs.c b/src/viced/afsfileprocs.c index 2b36f6237..b064464a6 100644 --- a/src/viced/afsfileprocs.c +++ b/src/viced/afsfileprocs.c @@ -49,9 +49,11 @@ #ifndef AFS_LINUX20_ENV #include +#ifndef AFS_ARM_DARWIN_ENV #include #endif #endif +#endif #ifdef AFS_HPUX_ENV /* included early because of name conflict on IOPEN */ #include diff --git a/src/vol/devname.c b/src/vol/devname.c index a5df6ff36..dbcb362ee 100644 --- a/src/vol/devname.c +++ b/src/vol/devname.c @@ -176,7 +176,7 @@ vol_DevName(dev_t adev, char *wpath) if (stat(part, &status) == -1) { continue; } -#if !defined(AFS_SGI_XFS_IOPS_ENV) && !defined(AFS_LINUX22_ENV) +#if !defined(AFS_SGI_XFS_IOPS_ENV) && !defined(AFS_LINUX22_ENV) && !defined(AFS_ARM_DARWIN_ENV) if ((status.st_ino != ROOTINO) /*|| ((status.st_mode & S_IFMT) != S_IFBLK) */ ) { continue; -- 2.39.5