+++ /dev/null
-*** src/Makefile 09:50:15 1.1.1.2
---- src/Makefile 10:48:14 1.3
-***************
-*** 69,75 ****
- cmd: basics comerr
- ${COMPILE_PART1} cmd ${COMPILE_PART2}
- @case ${SYS_NAME} in \
-! sgi_6* | sun4x_57 | sun4x_58 | hp_ux11* ) \
- ${COMPILE_PART1} cmd ${COMPILE_PART2} install64 ;; \
- esac
-
---- 69,75 ----
- cmd: basics comerr
- ${COMPILE_PART1} cmd ${COMPILE_PART2}
- @case ${SYS_NAME} in \
-! sgi_6* | sun4x_57 | sun4x_58 | hp_ux11* | sparc64_linux* ) \
- ${COMPILE_PART1} cmd ${COMPILE_PART2} install64 ;; \
- esac
-
-*** src/afs/afs.h 09:50:34 1.1.1.2
---- src/afs/afs.h 10:06:59 1.4
-***************
-*** 809,815 ****
---- 809,819 ----
- */
- ino64_t inode; /* Unix inode for this chunk */
- #else
-+ #if defined(AFS_LINUX_64BIT_KERNEL)
-+ long inode; /* Unix inode for this chunk */
-+ #else
- afs_int32 inode; /* Unix inode for this chunk */
-+ #endif
- #endif
- afs_int32 chunkBytes; /* Num bytes in this chunk */
- char states; /* Has this chunk been modified? */
-*** src/afs/afs_call.c 09:50:34 1.1.1.2
---- src/afs/afs_call.c 16:37:18 1.9
-***************
-*** 816,821 ****
---- 816,836 ----
- }
- #endif /* AFS_SUN57_64BIT_ENV */
-
-+ #if defined(AFS_LINUX_64BIT_KERNEL)
-+ struct iparam32 dst32;
-+
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ if (current->tss.flags & SPARC_FLAG_32BIT) {
-+ #else
-+ #error Not done for this linux version
-+ #endif
-+ AFS_COPYIN(cmarg, (caddr_t) &dst32, sizeof dst32, code);
-+ if (!code)
-+ iparam32_to_iparam(&dst32, dst);
-+ return code;
-+ }
-+ #endif /* AFS_LINUX_64BIT_KERNEL */
-+
- AFS_COPYIN(cmarg, (caddr_t) dst, sizeof *dst, code);
- return code;
- }
-***************
-*** 888,896 ****
- long parm4)
- {
- struct afssysargs args, *uap = &args;
-! int linux_ret=0;
-! int *retval = &linux_ret;
-! int eparm[4]; /* matches AFSCALL_ICL in fstrace.c */
- #else
- #if defined(UKERNEL)
- Afs_syscall ()
---- 903,911 ----
- long parm4)
- {
- struct afssysargs args, *uap = &args;
-! long linux_ret=0;
-! long *retval = &linux_ret;
-! long eparm[4]; /* matches AFSCALL_ICL in fstrace.c */
- #else
- #if defined(UKERNEL)
- Afs_syscall ()
-***************
-*** 1114,1120 ****
- {
- extern short afs_brsDaemons;
- extern afs_int32 afs_CheckServerDaemonStarted;
-! extern struct osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler;
- extern struct osi_file *afs_cacheInodep;
-
- AFS_STATCNT(afs_shutdown);
---- 1129,1135 ----
- {
- extern short afs_brsDaemons;
- extern afs_int32 afs_CheckServerDaemonStarted;
-! extern struct afs_osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler;
- extern struct osi_file *afs_cacheInodep;
-
- AFS_STATCNT(afs_shutdown);
-*** src/afs/afs_daemons.c 09:50:35 1.1.1.2
---- src/afs/afs_daemons.c 10:48:14 1.3
-***************
-*** 353,359 ****
- #ifdef AFS_LINUX22_ENV
- code = gop_lookupname((char *)ab->parm[0], AFS_UIOSYS, 1, (struct vnode **) 0, &dp);
- if (dp)
-! tvn = (struct vcache*)dp->d_inode;
- #else
- code = gop_lookupname((char *)ab->parm[0], AFS_UIOSYS, 1, (struct vnode **) 0, (struct vnode **)&tvn);
- #endif
---- 353,359 ----
- #ifdef AFS_LINUX22_ENV
- code = gop_lookupname((char *)ab->parm[0], AFS_UIOSYS, 1, (struct vnode **) 0, &dp);
- if (dp)
-! tvn = (struct vnode*)dp->d_inode;
- #else
- code = gop_lookupname((char *)ab->parm[0], AFS_UIOSYS, 1, (struct vnode **) 0, (struct vnode **)&tvn);
- #endif
-*** src/afs/afs_osi.h 09:50:35 1.1.1.2
---- src/afs/afs_osi.h 10:06:59 1.4
-***************
-*** 154,160 ****
- */
-
-
-! #if defined(AFS_HPUX_ENV) || defined(AFS_SUN57_ENV) || (defined(AFS_SGI61_ENV) && defined(KERNEL) && defined(_K64U64))
- typedef struct {
- afs_int32 tv_sec;
- afs_int32 tv_usec;
---- 154,160 ----
- */
-
-
-! #if defined(AFS_HPUX_ENV) || defined(AFS_SUN57_ENV) || defined(AFS_LINUX_64BIT_KERNEL) || (defined(AFS_SGI61_ENV) && defined(KERNEL) && defined(_K64U64))
- typedef struct {
- afs_int32 tv_sec;
- afs_int32 tv_usec;
-*** src/afs/afs_pioctl.c 09:50:35 1.1.1.2
---- src/afs/afs_pioctl.c 10:06:59 1.6
-***************
-*** 180,185 ****
---- 180,200 ----
- }
- #endif /* defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) */
-
-+ #if defined(AFS_LINUX_64BIT_KERNEL)
-+ struct afs_ioctl32 dst32;
-+
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ if (current->tss.flags & SPARC_FLAG_32BIT) {
-+ #else
-+ #error Not done for this linux type
-+ #endif
-+ AFS_COPYIN(cmarg, (caddr_t) &dst32, sizeof dst32, code);
-+ if (!code)
-+ afs_ioctl32_to_afs_ioctl(&dst32, dst);
-+ return code;
-+ }
-+ #endif /* defined(AFS_LINUX_64BIT_KERNEL) */
-+
- AFS_COPYIN(cmarg, (caddr_t) dst, sizeof *dst, code);
- return code;
- }
-***************
-*** 792,798 ****
- #ifdef AFS_LINUX22_ENV
- code = gop_lookupname(path, AFS_UIOUSER, follow, (struct vnode **) 0, &dp);
- if (!code)
-! vp = (struct vcache *)dp->d_inode;
- #else
- code = gop_lookupname(path, AFS_UIOUSER, follow, (struct vnode **) 0, &vp);
- #endif /* AFS_LINUX22_ENV */
---- 807,813 ----
- #ifdef AFS_LINUX22_ENV
- code = gop_lookupname(path, AFS_UIOUSER, follow, (struct vnode **) 0, &dp);
- if (!code)
-! vp = (struct vnode *)dp->d_inode;
- #else
- code = gop_lookupname(path, AFS_UIOUSER, follow, (struct vnode **) 0, &vp);
- #endif /* AFS_LINUX22_ENV */
-***************
-*** 2753,2759 ****
- /* Note that it doesn't have a cell yet... */
- if (!matches) {
- afs_uint32 temp = sp->host.s_addr;
-! srvr = afs_GetServer(&temp, 1, NULL, (vlonly ? AFS_VLPORT : AFS_FSPORT),
- WRITE_LOCK, (afsUUID *)0,0);
- srvr->addr->sa_iprank = sp->rank + afs_randomMod15();
- afs_PutServer(srvr, WRITE_LOCK);
---- 2768,2774 ----
- /* Note that it doesn't have a cell yet... */
- if (!matches) {
- afs_uint32 temp = sp->host.s_addr;
-! srvr = afs_GetServer(&temp, 1, 0, (vlonly ? AFS_VLPORT : AFS_FSPORT),
- WRITE_LOCK, (afsUUID *)0,0);
- srvr->addr->sa_iprank = sp->rank + afs_randomMod15();
- afs_PutServer(srvr, WRITE_LOCK);
-***************
-*** 3318,3325 ****
---- 3333,3342 ----
-
- if ( ainSize < sizeof(struct setspref) )
- return EINVAL;
-+ #if 0 /* num_servers is unsigned */
- if ( sin->num_servers < 0 )
- return EINVAL;
-+ #endif
- if ( sin->num_servers > AFS_MAX_INTERFACE_ADDR)
- return ENOMEM;
-
-*** src/afs/exporter.h 09:50:35 1.1.1.2
---- src/afs/exporter.h 10:06:59 1.4
-***************
-*** 33,39 ****
- * up 2 bytes
- */
-
-! #if defined(AFS_SUN57_64BIT_ENV) || defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR==64))
- #define AFS_XLATOR_MAGIC 0x8765 /* XXX */
- #else
- #define AFS_XLATOR_MAGIC 0x87654321
---- 33,39 ----
- * up 2 bytes
- */
-
-! #if defined(AFS_SUN57_64BIT_ENV) || defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZPTR==64)) || defined(AFS_LINUX_64BIT_KERNEL)
- #define AFS_XLATOR_MAGIC 0x8765 /* XXX */
- #else
- #define AFS_XLATOR_MAGIC 0x87654321
-*** src/afs/LINUX/osi_alloc.c 09:50:35 1.1.1.2
---- src/afs/LINUX/osi_alloc.c 10:06:59 1.6
-***************
-*** 32,39 ****
- };
-
- /* These assume 32-bit pointers */
-! #define MEMTYPE(A) (((unsigned int)A) & 0x3)
-! #define MEMADDR(A) (void *)((unsigned int)(A) & (~0x3))
-
- /* globals */
- afs_atomlist *al_mem_pool; /* pool of osi_linux_mem structures */
---- 32,39 ----
- };
-
- /* These assume 32-bit pointers */
-! #define MEMTYPE(A) (((unsigned long)A) & 0x3)
-! #define MEMADDR(A) (void *)((unsigned long)(A) & (~0x3))
-
- /* globals */
- afs_atomlist *al_mem_pool; /* pool of osi_linux_mem structures */
-***************
-*** 82,90 ****
-
- /* if we can use kmalloc use it to allocate the required memory. */
- if (asize < MAX_KMALLOC_SIZE) {
-! new = (void *)kmalloc(asize, GFP_KERNEL);
- if (new) /* piggy back alloc type */
-! (unsigned int)new |= KM_TYPE;
- }
- if (!new) { /* otherwise use vmalloc */
- int max_wait = 10;
---- 82,90 ----
-
- /* if we can use kmalloc use it to allocate the required memory. */
- if (asize < MAX_KMALLOC_SIZE) {
-! new = (void *)(long)kmalloc(asize, GFP_KERNEL);
- if (new) /* piggy back alloc type */
-! (unsigned long)new |= KM_TYPE;
- }
- if (!new) { /* otherwise use vmalloc */
- int max_wait = 10;
-***************
-*** 95,101 ****
- schedule();
- }
- if (new) /* piggy back alloc type */
-! (unsigned int)new |= VM_TYPE;
- }
- if (new)
- memset(MEMADDR(new), 0, asize);
---- 95,101 ----
- schedule();
- }
- if (new) /* piggy back alloc type */
-! (unsigned long)new |= VM_TYPE;
- }
- if (new)
- memset(MEMADDR(new), 0, asize);
-***************
-*** 139,145 ****
- {
- unsigned int key;
-
-! key = (unsigned int)p >> 2;
- key = (key * HASH_CONST)%HASH_PRIME;
-
- return key;
---- 139,145 ----
- {
- unsigned int key;
-
-! key = (unsigned int)(long)p >> 2;
- key = (key * HASH_CONST)%HASH_PRIME;
-
- return key;
-*** src/afs/LINUX/osi_cred.c 09:50:35 1.1.1.2
---- src/afs/LINUX/osi_cred.c 10:06:59 1.4
-***************
-*** 48,54 ****
- osi_Panic("crget: No more memory for creds!\n");
-
- for (i=0; i < CRED_ALLOC_STEP-1; i++)
-! cred_pool[i].cr_ref = (int)&cred_pool[i+1];
- cred_pool[i].cr_ref = 0;
- }
- tmp = cred_pool;
---- 48,54 ----
- osi_Panic("crget: No more memory for creds!\n");
-
- for (i=0; i < CRED_ALLOC_STEP-1; i++)
-! cred_pool[i].cr_ref = (long)&cred_pool[i+1];
- cred_pool[i].cr_ref = 0;
- }
- tmp = cred_pool;
-***************
-*** 69,75 ****
- }
-
- CRED_LOCK();
-! cr->cr_ref = (int)cred_pool;
- cred_pool = cr;
- CRED_UNLOCK();
- ncreds_inuse --;
---- 69,75 ----
- }
-
- CRED_LOCK();
-! cr->cr_ref = (long)cred_pool;
- cred_pool = cr;
- CRED_UNLOCK();
- ncreds_inuse --;
-*** src/afs/LINUX/osi_file.c 09:50:35 1.1.1.2
---- src/afs/LINUX/osi_file.c 10:48:14 1.3
-***************
-*** 181,187 ****
- char *aptr;
- afs_int32 asize; {
- struct AFS_UCRED *oldCred;
-! unsigned int resid;
- register afs_int32 code;
- register afs_int32 cnt1=0;
- AFS_STATCNT(osi_Read);
---- 181,187 ----
- char *aptr;
- afs_int32 asize; {
- struct AFS_UCRED *oldCred;
-! size_t resid;
- register afs_int32 code;
- register afs_int32 cnt1=0;
- AFS_STATCNT(osi_Read);
-***************
-*** 220,226 ****
- afs_int32 offset;
- afs_int32 asize; {
- struct AFS_UCRED *oldCred;
-! unsigned int resid;
- register afs_int32 code;
- AFS_STATCNT(osi_Write);
- if ( !afile )
---- 220,226 ----
- afs_int32 offset;
- afs_int32 asize; {
- struct AFS_UCRED *oldCred;
-! size_t resid;
- register afs_int32 code;
- AFS_STATCNT(osi_Write);
- if ( !afile )
-*** src/afs/LINUX/osi_groups.c 09:50:35 1.1.1.2
---- src/afs/LINUX/osi_groups.c 10:06:59 1.5
-***************
-*** 101,107 ****
- {
- int code;
- cred_t *cr = crref();
-! int junk;
- int old_pag;
-
- lock_kernel();
---- 101,107 ----
- {
- int code;
- cred_t *cr = crref();
-! afs_uint32 junk;
- int old_pag;
-
- lock_kernel();
-***************
-*** 125,130 ****
---- 125,149 ----
-
- return code;
- }
-+
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ asmlinkage int afs_xsetgroups32(int gidsetsize, __kernel_gid_t32 *grouplist)
-+ {
-+ gid_t gl[NGROUPS];
-+ int ret, i;
-+ mm_segment_t old_fs = get_fs ();
-+
-+ if ((unsigned) gidsetsize > NGROUPS)
-+ return -EINVAL;
-+ for (i = 0; i < gidsetsize; i++, grouplist++)
-+ if (__get_user (gl[i], grouplist))
-+ return -EFAULT;
-+ set_fs (KERNEL_DS);
-+ ret = afs_xsetgroups(gidsetsize, gl);
-+ set_fs (old_fs);
-+ return ret;
-+ }
-+ #endif
-
- static int afs_setgroups(cred_t **cr, int ngroups, gid_t *gidset, int change_parent)
- {
-*** src/afs/LINUX/osi_machdep.h 09:50:36 1.1.1.2
---- src/afs/LINUX/osi_machdep.h 10:48:14 1.3
-***************
-*** 30,36 ****
---- 30,40 ----
- #define afs_hz HZ
- #include "../h/sched.h"
- #define osi_Time() (xtime.tv_sec)
-+ #if (CPU == sparc64)
-+ #define osi_GetTime(V) do { (*##V##).tv_sec = xtime.tv_sec; (*##V##).tv_usec = xtime.tv_usec; } while (0)
-+ #else
- #define osi_GetTime(V) (*(V)=xtime)
-+ #endif
-
- #undef gop_lookupname
- #define gop_lookupname osi_lookupname
-***************
-*** 89,95 ****
---- 93,103 ----
-
- /* cred struct */
- typedef struct cred { /* maps to task field: */
-+ #if (CPU == sparc64)
-+ long cr_ref;
-+ #else
- int cr_ref;
-+ #endif
- unsigned short cr_uid; /* euid */
- unsigned short cr_ruid; /* uid */
- unsigned short cr_gid; /* egid */
-*** src/afs/LINUX/osi_misc.c 09:50:36 1.1.1.2
---- src/afs/LINUX/osi_misc.c 10:06:59 1.4
-***************
-*** 264,269 ****
---- 264,276 ----
- void afs_osi_SetTime(osi_timeval_t *tvp)
- {
- extern int (*sys_settimeofdayp)(struct timeval *tv, struct timezone *tz);
-+ #ifdef AFS_LINUX_64BIT_KERNEL
-+ struct timeval tv;
-+ AFS_STATCNT(osi_SetTime);
-+ tv.tv_sec = tvp->tv_sec;
-+ tv.tv_usec = tvp->tv_usec;
-+ (void) (*sys_settimeofdayp)(&tv, NULL);
-+ #else
- KERNEL_SPACE_DECL;
-
- AFS_STATCNT(osi_SetTime);
-***************
-*** 271,276 ****
---- 278,284 ----
- TO_USER_SPACE();
- (void) (*sys_settimeofdayp)(tvp, NULL);
- TO_KERNEL_SPACE();
-+ #endif
- }
-
- /* Free all the pages on any of the vnodes in the vlru. Must be done before
-*** src/afs/LINUX/osi_module.c 09:50:36 1.1.1.2
---- src/afs/LINUX/osi_module.c 10:06:59 1.8
-***************
-*** 26,32 ****
- asmlinkage int (*sys_killp)(int pid, int signal);
- asmlinkage int (*sys_setgroupsp)(int gidsetsize, gid_t *grouplist);
-
-! extern void *sys_call_table[];
- extern struct file_system_type afs_file_system;
-
- static long get_page_offset(void);
---- 26,32 ----
- asmlinkage int (*sys_killp)(int pid, int signal);
- asmlinkage int (*sys_setgroupsp)(int gidsetsize, gid_t *grouplist);
-
-! extern unsigned int sys_call_table[]; /* changed to uint because SPARC64 has syscaltable of 32bit items */
- extern struct file_system_type afs_file_system;
-
- static long get_page_offset(void);
-***************
-*** 42,53 ****
- /* Since sys_ni_syscall is not exported, I need to cache it in order to restore
- * it.
- */
-! static void *afs_ni_syscall = NULL;
-
- int init_module(void)
- {
- extern int afs_syscall();
- extern int afs_xsetgroups();
-
- /* obtain PAGE_OFFSET value */
- afs_linux_page_offset = get_page_offset();
---- 42,78 ----
- /* Since sys_ni_syscall is not exported, I need to cache it in order to restore
- * it.
- */
-! static unsigned int afs_ni_syscall = 0;
-
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ static unsigned int afs_ni_syscall32 = 0;
-+ asmlinkage int (*sys_setgroupsp32)(int gidsetsize, __kernel_gid_t32 *grouplist);
-+ extern unsigned int sys_call_table32[];
-+
-+ asmlinkage int afs_syscall32(long syscall, long parm1, long parm2, long parm3,
-+ long parm4, long parm5)
-+ {
-+ __asm__ __volatile__ ("
-+ srl %o4, 0, %o4
-+ mov %o7, %i7
-+ call afs_syscall
-+ srl %o5, 0, %o5
-+ ret
-+ nop
-+ ");
-+ }
-+ #endif
-+
-+ #define POINTER2SYSCALL (unsigned int)(unsigned long)
-+ #define SYSCALL2POINTER (void *)(long)
-+
- int init_module(void)
- {
- extern int afs_syscall();
- extern int afs_xsetgroups();
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ extern int afs_xsetgroups32();
-+ #endif
-
- /* obtain PAGE_OFFSET value */
- afs_linux_page_offset = get_page_offset();
-***************
-*** 59,84 ****
- }
-
- /* Initialize pointers to kernel syscalls. */
-! sys_settimeofdayp = sys_call_table[__NR_settimeofday];
-! sys_socketcallp = sys_call_table[__NR_socketcall];
-! sys_killp = sys_call_table[__NR_kill];
-
- /* setup AFS entry point. */
-! if (sys_call_table[__NR_afs_syscall] == afs_syscall) {
- printf("AFS syscall entry point already in use!\n");
- return -EBUSY;
- }
-
-
- afs_ni_syscall = sys_call_table[__NR_afs_syscall];
-! sys_call_table[__NR_afs_syscall] = afs_syscall;
-
- osi_Init();
- register_filesystem(&afs_file_system);
-
- /* Intercept setgroups calls */
-! sys_setgroupsp = sys_call_table[__NR_setgroups];
-! sys_call_table[__NR_setgroups] = afs_xsetgroups;
-
- return 0;
- }
---- 84,117 ----
- }
-
- /* Initialize pointers to kernel syscalls. */
-! sys_settimeofdayp = SYSCALL2POINTER sys_call_table[__NR_settimeofday];
-! sys_socketcallp = SYSCALL2POINTER sys_call_table[__NR_socketcall];
-! sys_killp = SYSCALL2POINTER sys_call_table[__NR_kill];
-
- /* setup AFS entry point. */
-! if (SYSCALL2POINTER sys_call_table[__NR_afs_syscall] == afs_syscall) {
- printf("AFS syscall entry point already in use!\n");
- return -EBUSY;
- }
-
-
- afs_ni_syscall = sys_call_table[__NR_afs_syscall];
-! sys_call_table[__NR_afs_syscall] = POINTER2SYSCALL afs_syscall;
-! #ifdef AFS_SPARC64_LINUX20_ENV
-! afs_ni_syscall32 = sys_call_table32[__NR_afs_syscall];
-! sys_call_table32[__NR_afs_syscall] = POINTER2SYSCALL afs_syscall32;
-! #endif
-
- osi_Init();
- register_filesystem(&afs_file_system);
-
- /* Intercept setgroups calls */
-! sys_setgroupsp = SYSCALL2POINTER sys_call_table[__NR_setgroups];
-! sys_call_table[__NR_setgroups] = POINTER2SYSCALL afs_xsetgroups;
-! #ifdef AFS_SPARC64_LINUX20_ENV
-! sys_setgroupsp32 = SYSCALL2POINTER sys_call_table32[__NR_setgroups];
-! sys_call_table32[__NR_setgroups] = POINTER2SYSCALL afs_xsetgroups32;
-! #endif
-
- return 0;
- }
-***************
-*** 87,94 ****
- {
- struct task_struct *t;
-
-! sys_call_table[__NR_setgroups] = sys_setgroupsp;
- sys_call_table[__NR_afs_syscall] = afs_ni_syscall;
-
- unregister_filesystem(&afs_file_system);
-
---- 120,131 ----
- {
- struct task_struct *t;
-
-! sys_call_table[__NR_setgroups] = POINTER2SYSCALL sys_setgroupsp;
- sys_call_table[__NR_afs_syscall] = afs_ni_syscall;
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ sys_call_table32[__NR_setgroups] = POINTER2SYSCALL sys_setgroupsp32;
-+ sys_call_table32[__NR_afs_syscall] = afs_ni_syscall32;
-+ #endif
-
- unregister_filesystem(&afs_file_system);
-
-***************
-*** 100,106 ****
-
- static long get_page_offset(void)
- {
-! #if defined(AFS_PPC_LINUX22_ENV)
- return PAGE_OFFSET;
- #else
- struct task_struct *p;
---- 137,143 ----
-
- static long get_page_offset(void)
- {
-! #if defined(AFS_PPC_LINUX22_ENV) || defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV)
- return PAGE_OFFSET;
- #else
- struct task_struct *p;
-*** src/afs/LINUX/osi_sleep.c 09:50:36 1.1.1.2
---- src/afs/LINUX/osi_sleep.c 12:33:16
-***************
-*** 16,24 ****
-
- #if defined(AFS_GLOBAL_SUNLOCK)
- static int osi_TimedSleep(char *event, afs_int32 ams, int aintok);
- void afs_osi_Wakeup(char *event);
- void afs_osi_Sleep(char *event);
-- #endif
-
- static char waitV;
-
---- 16,24 ----
-
- #if defined(AFS_GLOBAL_SUNLOCK)
- static int osi_TimedSleep(char *event, afs_int32 ams, int aintok);
-+ #endif
- void afs_osi_Wakeup(char *event);
- void afs_osi_Sleep(char *event);
-
- static char waitV;
-
-*** src/afs/LINUX/osi_vnodeops.c 09:50:36 1.1.1.2
---- src/afs/LINUX/osi_vnodeops.c 10:48:14 1.3
-***************
-*** 146,151 ****
---- 146,152 ----
- static int afs_linux_readdir(struct file *fp,
- void *dirbuf, filldir_t filldir)
- {
-+ extern struct DirEntry * afs_dir_GetBlob();
- struct vcache *avc = (struct vcache*)FILE_INODE(fp);
- struct vrequest treq;
- register struct dcache *tdc;
-***************
-*** 525,531 ****
- }
-
- /* Not allowed to directly read a directory. */
-! int afs_linux_dir_read(struct file *fp, char *buf, size_t count, loff_t *ppos)
- {
- return -EISDIR;
- }
---- 526,532 ----
- }
-
- /* Not allowed to directly read a directory. */
-! ssize_t afs_linux_dir_read(struct file *fp, char *buf, size_t count, loff_t *ppos)
- {
- return -EISDIR;
- }
-*** src/afs/VNOPS/afs_vnop_lookup.c 09:50:36 1.1.1.2
---- src/afs/VNOPS/afs_vnop_lookup.c 10:06:59 1.4
-***************
-*** 325,331 ****
---- 325,335 ----
- #if (defined(AFS_SGI62_ENV) || defined(AFS_SUN57_64BIT_ENV))
- extern int BlobScan(ino64_t *afile, afs_int32 ablob);
- #else
-+ #if defined AFS_LINUX_64BIT_KERNEL
-+ extern int BlobScan(long *afile, afs_int32 ablob);
-+ #else
- extern int BlobScan(afs_int32 *afile, afs_int32 ablob);
-+ #endif
- #endif
-
-
-*** src/afs/VNOPS/afs_vnop_readdir.c 09:50:36 1.1.1.2
---- src/afs/VNOPS/afs_vnop_readdir.c 10:06:59 1.4
-***************
-*** 59,65 ****
---- 59,69 ----
- #if defined(AFS_SGI62_ENV) || defined(AFS_SUN57_64BIT_ENV)
- int BlobScan(ino64_t *afile, afs_int32 ablob)
- #else
-+ #ifdef AFS_LINUX_64BIT_KERNEL
-+ int BlobScan(long *afile, afs_int32 ablob)
-+ #else
- int BlobScan(afs_int32 *afile, afs_int32 ablob)
-+ #endif
- #endif
- {
- register afs_int32 relativeBlob;
-*** src/config/Makefile.sparc64_linux22 May 5 22:32:27 1998
---- src/config/Makefile.sparc64_linux22 Dec 22 14:37:51 2000
-***************
-*** 0 ****
---- 1,50 ----
-+ # Copyright 1998 Transarc Corporation
-+ #
-+ # Keep macros within each section in sorted order for clean diff displays.
-+ #
-+ # AFS_OSTYPE used to indicate suffixes and os specific subdirectories.
-+ AFS_OSTYPE = LINUX
-+
-+ # Base directory for linux kernel source. Actually a prefix which is complete
-+ # when LINUX_VERS is appended to it.
-+ LINUX_SRCDIR = /usr/src/linux-
-+ # Default list of Linux kernels to build. Build will run only if all
-+ # can be built. To build a different set, specify LINUX_VERS to make.
-+ LINUX_VERS = 2.2.14
-+
-+ #
-+ # compilation and link editor flags
-+ DBG=-g
-+ OPTMZ=-O2
-+ PAM_CFLAGS = -O2 -Dlinux -DLINUX_PAM -fPIC
-+ # Put -O2 here to _ensure_ all Makefiles pick it up.
-+ XCFLAGS= -O2
-+ MT_CFLAGS=-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}
-+ XLDFLAGS=
-+ SHARE_LDFLAGS = -shared -Xlinker -x
-+ SHLIB_SUFFIX=so
-+ SHLIB_CFLAGS=
-+ #
-+ # libraries
-+ MTLIBS=-lpthread
-+ TXLIBS= /usr/lib/libncurses.so
-+ XLIBS=
-+ #
-+ # programs
-+ AR=ar
-+ AS=as
-+ CP=cp
-+ INSTALL=${SRCDIR}bin/install
-+ LD=ld
-+ MT_CC=cc
-+ MV=mv
-+ RANLIB=ranlib
-+ RM=rm
-+ WASHTOOL=${SRCDIR}bin/washtool
-+ #
-+ # Other OS specific requirements
-+ #
-+ YACC = bison -y
-+ LEX = flex -l
-+ # Used in des library.
-+ CRYPT_OBJ = crypt.o
-*** src/config/Makefile.sparc_linux22 May 5 22:32:27 1998
---- src/config/Makefile.sparc_linux22 Dec 22 14:37:51 2000
-***************
-*** 0 ****
---- 1,50 ----
-+ # Copyright 1998 Transarc Corporation
-+ #
-+ # Keep macros within each section in sorted order for clean diff displays.
-+ #
-+ # AFS_OSTYPE used to indicate suffixes and os specific subdirectories.
-+ AFS_OSTYPE = LINUX
-+
-+ # Base directory for linux kernel source. Actually a prefix which is complete
-+ # when LINUX_VERS is appended to it.
-+ LINUX_SRCDIR = /usr/src/linux-
-+ # Default list of Linux kernels to build. Build will run only if all
-+ # can be built. To build a different set, specify LINUX_VERS to make.
-+ LINUX_VERS = 2.2.14
-+
-+ #
-+ # compilation and link editor flags
-+ DBG=-g
-+ OPTMZ=-O2
-+ PAM_CFLAGS = -O2 -Dlinux -DLINUX_PAM -fPIC
-+ # Put -O2 here to _ensure_ all Makefiles pick it up.
-+ XCFLAGS= -O2
-+ MT_CFLAGS=-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}
-+ XLDFLAGS=
-+ SHARE_LDFLAGS = -shared -Xlinker -x
-+ SHLIB_SUFFIX=so
-+ SHLIB_CFLAGS=
-+ #
-+ # libraries
-+ MTLIBS=-lpthread
-+ TXLIBS= /usr/lib/libncurses.so
-+ XLIBS=
-+ #
-+ # programs
-+ AR=ar
-+ AS=as
-+ CP=cp
-+ INSTALL=${SRCDIR}bin/install
-+ LD=ld
-+ MT_CC=cc
-+ MV=mv
-+ RANLIB=ranlib
-+ RM=rm
-+ WASHTOOL=${SRCDIR}bin/washtool
-+ #
-+ # Other OS specific requirements
-+ #
-+ YACC = bison -y
-+ LEX = flex -l
-+ # Used in des library.
-+ CRYPT_OBJ = crypt.o
-*** src/config/afs_sysnames.h 09:50:41 1.1.1.2
---- src/config/afs_sysnames.h 10:48:14 1.3
-***************
-*** 114,119 ****
---- 114,124 ----
- #define SYS_NAME_ID_ppc_linux22 1601
- #define SYS_NAME_ID_ppc_linux24 1602
-
-+ #define SYS_NAME_ID_sparc_linux2 1700
-+ #define SYS_NAME_ID_sparc_linux22 1701
-+
-+ #define SYS_NAME_ID_sparc64_linux2 1800
-+ #define SYS_NAME_ID_sparc64_linux22 1801
-
-
- /*
-*** src/config/param.sparc64_linux22.h May 5 22:32:27 1998
---- src/config/param.sparc64_linux22.h Dec 22 12:58:37 2000
-***************
-*** 0 ****
---- 1,79 ----
-+ /* Copyright (C) 1998 by Transarc Corporation */
-+
-+
-+ #ifndef _PARAM_SPARC64_LINUX22_H_
-+ #define _PARAM_SPARC64_LINUX22_H_
-+
-+ /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel,
-+ * it's a judgment call. If something is obviously sparc64 specific, use that
-+ * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2"
-+ * in the sysname is the current version of the client. This takes into
-+ * account the perferred OS user space configuration as well as the kernel.
-+ */
-+
-+ #define AFS_LINUX20_ENV 1
-+ #define AFS_LINUX22_ENV 1
-+ #define AFS_SPARC64_LINUX20_ENV 1
-+ #define AFS_SPARC64_LINUX22_ENV 1
-+ #define AFS_LINUX_64BIT_KERNEL 1
-+ #define AFS_NONFSTRANS 1
-+
-+ #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */
-+ #define AFS_SYSCALL 227
-+ #define AFS_64BIT_IOPS_ENV 1
-+ #define AFS_NAMEI_ENV 1 /* User space interface to file system */
-+
-+ #define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */
-+ #define AFS_32BIT_USR_ENV 1 /* user level processes are 32bit */
-+ #define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits. */
-+
-+ #include <afs/afs_sysnames.h>
-+
-+ #define AFS_USERSPACE_IP_ADDR 1
-+ #define RXK_LISTENER_ENV 1
-+ #define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */
-+
-+ /* Machine / Operating system information */
-+ #define SYS_NAME "sparc64_linux22"
-+ #define SYS_NAME_ID SYS_NAME_ID_sparc64_linux22
-+ #define AFSBIG_ENDIAN 1
-+ #define AFS_HAVE_FFS 1 /* Use system's ffs. */
-+ #define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */
-+ #define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */
-+
-+ #if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
-+ #include <linux/config.h>
-+ #ifdef CONFIG_SMP
-+ #undef CONFIG_SMP
-+ #endif
-+ /* Using "AFS_SMP" to map to however many #define's are required to get
-+ * MP to compile for Linux
-+ */
-+ #ifdef AFS_SMP
-+ #define CONFIG_SMP
-+ #define __SMP__
-+ #define AFS_GLOBAL_SUNLOCK
-+ #endif
-+
-+ #endif /* __KERNEL__ && !DUMP_KERNEL*/
-+
-+ #ifdef KERNEL
-+ #ifndef MIN
-+ #define MIN(A,B) ((A) < (B) ? (A) : (B))
-+ #endif
-+ #ifndef MAX
-+ #define MAX(A,B) ((A) > (B) ? (A) : (B))
-+ #endif
-+ #endif /* KERNEL */
-+
-+ /* on sparclinux is O_LARGEFILE defined but there is not off64_t,
-+ so small hack to get usd_file.c work */
-+ #ifndef KERNEL
-+ #define __USE_FILE_OFFSET64 1
-+ #define __USE_LARGEFILE64 1
-+ #if !defined off64_t
-+ #define off64_t __off64_t
-+ #endif
-+ #endif
-+
-+ #endif /* _PARAM_SPARC64_LINUX20_H_ */
-*** src/config/param.sparc64_linux22_usr.h May 5 22:32:27 1998
---- src/config/param.sparc64_linux22_usr.h Dec 22 12:10:53 2000
-***************
-*** 0 ****
---- 1,56 ----
-+ /* Copyright (C) 1998 by Transarc Corporation */
-+
-+
-+ #ifndef _PARAM_USR_SPARC64_LINUX22_H_
-+ #define _PARAM_USR_SPARC64_LINUX22_H_
-+
-+ /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel,
-+ * it's a judgment call. If something is obviously sparc64 specific, use that
-+ * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2"
-+ * in the sysname is the current version of the client. This takes into
-+ * account the perferred OS user space configuration as well as the kernel.
-+ */
-+
-+ #define UKERNEL 1 /* user space kernel */
-+ #define AFS_ENV 1
-+ #define AFS_USR_LINUX20_ENV 1
-+ #define AFS_USR_LINUX22_ENV 1
-+ #define AFS_NONFSTRANS 1
-+
-+ #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */
-+ #define AFS_SYSCALL 227
-+ #define AFS_64BIT_IOPS_ENV 1
-+ #define AFS_NAMEI_ENV 1 /* User space interface to file system */
-+ #include <afs/afs_sysnames.h>
-+
-+ #define AFS_USERSPACE_IP_ADDR 1
-+ #define RXK_LISTENER_ENV 1
-+ #define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */
-+
-+
-+ /* Machine / Operating system information */
-+ #define SYS_NAME "sparc64_linux22"
-+ #define SYS_NAME_ID SYS_NAME_ID_sparc64_linux22
-+ #define AFSBIG_ENDIAN 1
-+ #define AFS_HAVE_FFS 1 /* Use system's ffs. */
-+ #define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */
-+ #define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */
-+
-+ #define afsio_iov uio_iov
-+ #define afsio_iovcnt uio_iovcnt
-+ #define afsio_offset uio_offset
-+ #define afsio_seg uio_segflg
-+ #define afsio_fmode uio_fmode
-+ #define afsio_resid uio_resid
-+ #define AFS_UIOSYS 1
-+ #define AFS_UIOUSER UIO_USERSPACE
-+ #define AFS_CLBYTES MCLBYTES
-+ #define AFS_MINCHANGE 2
-+ #define VATTR_NULL usr_vattr_null
-+
-+ #define AFS_DIRENT
-+ #ifndef CMSERVERPREF
-+ #define CMSERVERPREF
-+ #endif
-+
-+ #endif /* _PARAM_USR_SPARC64_LINUX22_H_ */
-*** src/config/param.sparc_linux22.h May 5 22:32:27 1998
---- src/config/param.sparc_linux22.h Dec 22 12:58:26 2000
-***************
-*** 0 ****
---- 1,81 ----
-+ /* Copyright (C) 1998 by Transarc Corporation */
-+
-+
-+ #ifndef _PARAM_SPARC_LINUX22_H_
-+ #define _PARAM_SPARC_LINUX22_H_
-+
-+ /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel,
-+ * it's a judgment call. If something is obviously sparc specific, use that
-+ * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2"
-+ * in the sysname is the current version of the client. This takes into
-+ * account the perferred OS user space configuration as well as the kernel.
-+ */
-+
-+ #define AFS_LINUX20_ENV 1
-+ #define AFS_LINUX22_ENV 1
-+ #define AFS_SPARC_LINUX20_ENV 1
-+ #define AFS_SPARC_LINUX22_ENV 1
-+ #define AFS_NONFSTRANS 1
-+
-+ #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */
-+ #define AFS_SYSCALL 227
-+ #define AFS_64BIT_IOPS_ENV 1
-+ #define AFS_NAMEI_ENV 1 /* User space interface to file system */
-+ #include <afs/afs_sysnames.h>
-+
-+ #define AFS_USERSPACE_IP_ADDR 1
-+ #define RXK_LISTENER_ENV 1
-+ #define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */
-+
-+
-+ /* Machine / Operating system information */
-+ #define SYS_NAME "sparc_linux22"
-+ #define SYS_NAME_ID SYS_NAME_ID_sparc_linux22
-+ #define AFSBIG_ENDIAN 1
-+ #define AFS_HAVE_FFS 1 /* Use system's ffs. */
-+ #define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */
-+ #define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */
-+
-+ #if defined(__KERNEL__) && !defined(KDUMP_KERNEL)
-+ #include <linux/config.h>
-+ #ifdef CONFIG_SMP
-+ #undef CONFIG_SMP
-+ #endif
-+ /* Using "AFS_SMP" to map to however many #define's are required to get
-+ * MP to compile for Linux
-+ */
-+ #ifdef AFS_SMP
-+ #define CONFIG_SMP
-+ #define __SMP__
-+ #define AFS_GLOBAL_SUNLOCK
-+ #endif
-+
-+ #endif /* __KERNEL__ && !DUMP_KERNEL*/
-+
-+ #ifdef KERNEL
-+ #ifndef MIN
-+ #define MIN(A,B) ((A) < (B) ? (A) : (B))
-+ #endif
-+ #ifndef MAX
-+ #define MAX(A,B) ((A) > (B) ? (A) : (B))
-+ #endif
-+ #endif /* KERNEL */
-+
-+ #if defined(AFS_SMP) && defined(CONFIG_MODVERSIONS)
-+ /* hack, I don't know what else with theese symbols */
-+ #define _do_spin_lock _do_spin_lock_R__ver__do_spin_lock
-+ #define _do_spin_unlock _do_spin_unlock_R__ver__do_spin_unlock
-+ #define kernel_flag kernel_flag_R__ver_kernel_flag
-+ #endif
-+
-+ /* on sparclinux is O_LARGEFILE defined but there is not off64_t,
-+ so small hack to get usd_file.c work */
-+ #ifndef KERNEL
-+ #define __USE_FILE_OFFSET64 1
-+ #define __USE_LARGEFILE64 1
-+ #if !defined off64_t
-+ #define off64_t __off64_t
-+ #endif
-+ #endif
-+
-+ #endif /* _PARAM_SPARC_LINUX20_H_ */
-*** src/config/param.sparc_linux22_usr.h May 5 22:32:27 1998
---- src/config/param.sparc_linux22_usr.h Dec 22 12:10:34 2000
-***************
-*** 0 ****
---- 1,56 ----
-+ /* Copyright (C) 1998 by Transarc Corporation */
-+
-+
-+ #ifndef _PARAM_USR_SPARC_LINUX22_H_
-+ #define _PARAM_USR_SPARC_LINUX22_H_
-+
-+ /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel,
-+ * it's a judgment call. If something is obviously sparc specific, use that
-+ * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2"
-+ * in the sysname is the current version of the client. This takes into
-+ * account the perferred OS user space configuration as well as the kernel.
-+ */
-+
-+ #define UKERNEL 1 /* user space kernel */
-+ #define AFS_ENV 1
-+ #define AFS_USR_LINUX20_ENV 1
-+ #define AFS_USR_LINUX22_ENV 1
-+ #define AFS_NONFSTRANS 1
-+
-+ #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */
-+ #define AFS_SYSCALL 227
-+ #define AFS_64BIT_IOPS_ENV 1
-+ #define AFS_NAMEI_ENV 1 /* User space interface to file system */
-+ #include <afs/afs_sysnames.h>
-+
-+ #define AFS_USERSPACE_IP_ADDR 1
-+ #define RXK_LISTENER_ENV 1
-+ #define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */
-+
-+
-+ /* Machine / Operating system information */
-+ #define SYS_NAME "sparc_linux22"
-+ #define SYS_NAME_ID SYS_NAME_ID_sparc_linux22
-+ #define AFSBIG_ENDIAN 1
-+ #define AFS_HAVE_FFS 1 /* Use system's ffs. */
-+ #define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */
-+ #define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */
-+
-+ #define afsio_iov uio_iov
-+ #define afsio_iovcnt uio_iovcnt
-+ #define afsio_offset uio_offset
-+ #define afsio_seg uio_segflg
-+ #define afsio_fmode uio_fmode
-+ #define afsio_resid uio_resid
-+ #define AFS_UIOSYS 1
-+ #define AFS_UIOUSER UIO_USERSPACE
-+ #define AFS_CLBYTES MCLBYTES
-+ #define AFS_MINCHANGE 2
-+ #define VATTR_NULL usr_vattr_null
-+
-+ #define AFS_DIRENT
-+ #ifndef CMSERVERPREF
-+ #define CMSERVERPREF
-+ #endif
-+
-+ #endif /* _PARAM_USR_SPARC_LINUX22_H_ */
-*** src/des/andrew-conf.h 09:50:41 1.1.1.2
---- src/des/andrew-conf.h 10:48:14 1.3
-***************
-*** 44,50 ****
---- 44,58 ----
- #ifdef AFS_PPC_LINUX20_ENV
- #include "conf-ppc-linux.h"
- #else
-+ #ifdef AFS_SPARC_LINUX20_ENV
-+ #include "conf-sparc-linux.h"
-+ #else
-+ #ifdef AFS_SPARC64_LINUX20_ENV
-+ #include "conf-sparc64-linux.h"
-+ #else
- #include "conf-i386-linux.h"
-+ #endif /* AFS_SPARC64_LINUX20_ENV */
-+ #endif /* AFS_SPARC_LINUX20_ENV */
- #endif
- #else
- Sorry, you lose.
-*** src/des/conf-sparc-linux.h May 5 22:32:27 1998
---- src/des/conf-sparc-linux.h Dec 22 14:37:52 2000
-***************
-*** 0 ****
---- 1,15 ----
-+ /*
-+ * Copyright 1988 by the Massachusetts Institute of Technology.
-+ *
-+ * For copying and distribution information, please see the file
-+ * <mit-copyright.h>.
-+ *
-+ * Machine-type definitions: Linux on Intel
-+ */
-+
-+ #include <mit-cpyright.h>
-+
-+ #define BITS32
-+ #define BIG
-+ #define MSBFIRST
-+ #define MUSTALIGN
-*** src/des/conf-sparc64-linux.h May 5 22:32:27 1998
---- src/des/conf-sparc64-linux.h Dec 22 14:37:52 2000
-***************
-*** 0 ****
---- 1,15 ----
-+ /*
-+ * Copyright 1988 by the Massachusetts Institute of Technology.
-+ *
-+ * For copying and distribution information, please see the file
-+ * <mit-copyright.h>.
-+ *
-+ * Machine-type definitions: Linux on Intel
-+ */
-+
-+ #include <mit-cpyright.h>
-+
-+ #define BITS32
-+ #define BIG
-+ #define MSBFIRST
-+ #define MUSTALIGN
-*** src/libafs/MakefileProto.LINUX 09:50:43 1.1.1.2
---- src/libafs/MakefileProto.LINUX 15:24:19 1.5
-***************
-*** 41,46 ****
---- 41,57 ----
- -fno-strength-reduce -pipe -m486 -malign-loops=2 -malign-jumps=2 \
- -malign-functions=2
- DEFINES = -D__KERNEL__ -DCPU=586 -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
-+ <sparc_linux22 sparc_linux24>
-+ LD = ld -m elf32_sparc
-+ CCFLAGS = -O2 -fomit-frame-pointer \
-+ -fno-strength-reduce -pipe -mcpu=v8 -mno-fpu -fcall-used-g5 -fcall-used-g7
-+ DEFINES = -D__KERNEL__ -DCPU=sparc -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
-+ <sparc64_linux22 sparc64_linux24>
-+ CC = sparc64-linux-gcc
-+ LD = ld -m elf64_sparc
-+ CCFLAGS = -O2 -fomit-frame-pointer \
-+ -fno-strength-reduce -pipe -mcpu=ultrasparc -m64 -mno-fpu -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare
-+ DEFINES = -D__KERNEL__ -DCPU=sparc64 -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
- <ppc_linux22 ppc_linux24>
- CCFLAGS = -O2 -fomit-frame-pointer -fno-strength-reduce \
- -fno-strict-aliasing -fsigned-char -msoft-float -pipe \
-***************
-*** 95,100 ****
---- 106,115 ----
- ln -s ${LINUX_SRCDIR}$$v/include/asm-i386 asm ; \
- <ppc_linux22 ppc_linux24>
- ln -s ${LINUX_SRCDIR}$$v/include/asm-ppc asm ; \
-+ <sparc_linux22 sparc_linux24>
-+ ln -s ${LINUX_SRCDIR}$$v/include/asm-sparc asm ; \
-+ <sparc64_linux22 sparc64_linux24>
-+ ln -s ${LINUX_SRCDIR}$$v/include/asm-sparc64 asm ; \
- <all>
- for m in ${MPS} ; do \
- KDIR=${KOBJ}-$$v-$$m ; \
-*** src/lwp/lwp.c 09:50:44 1.1.1.2
---- src/lwp/lwp.c 10:48:14 1.3
-***************
-*** 342,351 ****
---- 342,357 ----
- savecontext(Create_Process_Part2, &temp2->context,
- stackptr+stacksize-16); /* 16 = 2 * jmp_buf_type*/
- #else
-+ #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV)
- savecontext(Create_Process_Part2, &temp2->context,
-+ stackptr+stacksize-0x40); /* lomgjmp does something
-+ with %fp + 0x38 */
-+ #else
-+ savecontext(Create_Process_Part2, &temp2->context,
- stackptr+stacksize-sizeof(void *));
- #endif
- #endif
-+ #endif
- /* End of gross hack */
-
- Set_LWP_RC();
-***************
-*** 463,470 ****
---- 469,481 ----
- savecontext(Dispatcher, &(temp -> context),
- &(LWPANCHOR.dsptchstack[(sizeof LWPANCHOR.dsptchstack)-8]));
- #else
-+ #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV)
- savecontext(Dispatcher, &(temp -> context),
-+ &(LWPANCHOR.dsptchstack[(sizeof LWPANCHOR.dsptchstack)-0x40]));
-+ #else
-+ savecontext(Dispatcher, &(temp -> context),
- &(LWPANCHOR.dsptchstack[(sizeof LWPANCHOR.dsptchstack)-sizeof(void *)]));
-+ #endif
- #endif
- #endif
- }
-*** src/lwp/lwp.h 09:50:44 1.1.1.2
---- src/lwp/lwp.h 10:48:14 1.3
-***************
-*** 193,199 ****
- #else
- struct lwp_context { /* saved context for dispatcher */
- char *topstack; /* ptr to top of process stack */
-! #ifdef sparc
- #ifdef save_allregs
- int globals[7+1+32+2+32+2]; /* g1-g7, y reg, f0-f31, fsr, fq, c0-c31, csr, cq. */
- #else
---- 193,199 ----
- #else
- struct lwp_context { /* saved context for dispatcher */
- char *topstack; /* ptr to top of process stack */
-! #if defined(sparc) && !defined(__linux__)
- #ifdef save_allregs
- int globals[7+1+32+2+32+2]; /* g1-g7, y reg, f0-f31, fsr, fq, c0-c31, csr, cq. */
- #else
-*** src/lwp/preempt.c 09:50:44 1.1.1.2
---- src/lwp/preempt.c 10:48:14 1.3
-***************
-*** 95,98 ****
- return(LWP_SUCCESS);
- }
-
-! #endif /* AFS_I386_LINUX20_ENV */
---- 95,98 ----
- return(LWP_SUCCESS);
- }
-
-! #endif /* AFS_LINUX20_ENV */
-*** src/lwp/process.c 09:50:44 1.1.1.2
---- src/lwp/process.c 15:24:19 1.5
-***************
-*** 33,40 ****
- #elif defined(AFS_LINUX20_ENV)
- #if defined(AFS_PPC_LINUX20_ENV)
- #define LWP_SP 0
-! #else
- #define LWP_SP 4
- #endif
- #else
- Need offset to SP in jmp_buf for this platform.
---- 33,48 ----
- #elif defined(AFS_LINUX20_ENV)
- #if defined(AFS_PPC_LINUX20_ENV)
- #define LWP_SP 0
-! #elif defined(AFS_I386_LINUX20_ENV)
- #define LWP_SP 4
-+ #elif defined(AFS_SPARC_LINUX20_ENV)
-+ #define LWP_SP 0
-+ #define LWP_FP 1
-+ #elif defined(AFS_SPARC64_LINUX20_ENV) && defined(AFS_32BIT_USR_ENV)
-+ #define LWP_SP 0
-+ #define LWP_FP 1
-+ #else
-+ #error Unsupported linux LWP system type.
- #endif
- #else
- Need offset to SP in jmp_buf for this platform.
-***************
-*** 97,102 ****
---- 105,113 ----
- {
- case 0: jmpBuffer = (jmp_buf_type *)jmp_tmp;
- jmpBuffer[LWP_SP] = (jmp_buf_type)sp;
-+ #if defined(AFS_SPARC_LINUX20_ENV) || (defined(AFS_SPARC64_LINUX20_ENV) && defined(AFS_32BIT_USR_ENV))
-+ jmpBuffer[LWP_FP] = (jmp_buf_type)sp;
-+ #endif
- longjmp(jmp_tmp,1);
- break;
- case 1: (*EP)();
-*** src/rx/rx.c 09:50:47 1.1.1.2
---- src/rx/rx.c 10:07:00 1.4
-***************
-*** 4927,4933 ****
- (char *)call, istack);
- #else /* RX_ENABLE_LOCKS */
- call->resendEvent = rxevent_Post(&retryTime, rxi_Start,
-! (char *)call, (void*)istack);
- #endif /* RX_ENABLE_LOCKS */
- }
- }
---- 4927,4933 ----
- (char *)call, istack);
- #else /* RX_ENABLE_LOCKS */
- call->resendEvent = rxevent_Post(&retryTime, rxi_Start,
-! (char *)call, (void*)(long)istack);
- #endif /* RX_ENABLE_LOCKS */
- }
- }
-*** src/rx/rx_clock.h 09:50:47 1.1.1.2
---- src/rx/rx_clock.h 10:32:48
-***************
-*** 83,89 ****
- #else /* KERNEL */
- #include "../afs/afs_osi.h"
- #define clock_Init()
-! #if defined(AFS_SGI61_ENV) || defined(AFS_HPUX_ENV)
- #define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)cv)
- #else
- #define clock_GetTime(cv) osi_GetTime((struct timeval *)cv)
---- 83,89 ----
- #else /* KERNEL */
- #include "../afs/afs_osi.h"
- #define clock_Init()
-! #if defined(AFS_SGI61_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_LINUX_64BIT_KERNEL)
- #define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)cv)
- #else
- #define clock_GetTime(cv) osi_GetTime((struct timeval *)cv)
-*** src/venus/fstrace.c 09:50:49 1.1.1.2
---- src/venus/fstrace.c 16:37:18 1.6
-***************
-*** 2072,2082 ****
---- 2072,2091 ----
- {
- int code;
- #ifdef AFS_LINUX20_ENV
-+ #if defined AFS_LINUX_64BIT_KERNEL
-+ long long eparm[4];
-+ /* don't want to sign extend it to 64bit, so using ulong */
-+ eparm[0] = (unsigned long)parm3;
-+ eparm[1] = (unsigned long)parm4;
-+ eparm[2] = (unsigned long)parm5;
-+ eparm[3] = (unsigned long)parm6;
-+ #else
- int eparm[4];
- eparm[0] = parm3;
- eparm[1] = parm4;
- eparm[2] = parm5;
- eparm[3] = parm6;
-+ #endif
- /* Linux can only handle 5 arguments in the actual syscall. */
- if (call == AFSCALL_ICL) {
- code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, eparm);
-***************
-*** 2084,2089 ****
---- 2093,2106 ----
- else {
- code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3);
- }
-+ #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV)
-+ /* on sparc this function returns none value, so do it myself */
-+ __asm__ __volatile__ ("
-+ mov %o0, %i0
-+ ret
-+ restore
-+ ");
-+ #endif
- #else
- #if !defined(AFS_SGI_ENV) && !defined(AFS_AIX32_ENV)
- code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3, parm4);
-*** src/venus/kdump.c 09:50:49 1.1.1.2
---- src/venus/kdump.c 10:48:14 1.4
-***************
-*** 211,216 ****
---- 211,218 ----
- #define _LINUX_TIME_H
- #define _LINUX_FCNTL_H
- #define _I386_STATFS_H
-+ #define _SPARC_STATFS_H
-+ #define _SPARC64_STATFS_H
- struct timezone {
- int a,b;
- };
-***************
-*** 219,224 ****
---- 221,227 ----
- int tv_usec;
- } timeval_t; /* Needed here since KERNEL defined. */
- #define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
-+ #define _LINUX_BYTEORDER_BIG_ENDIAN_H
- #include <linux/version.h>
- #include <linux/fs.h>
- #include <afs/osi_vfs.h>
-***************
-*** 1892,1898 ****
- #endif
- }
-
-! #if defined(sparc)
- int readmem(kmem, buf, vad, len)
- int kmem, len;
- #ifdef AFS_SUN57_ENV
---- 1895,1901 ----
- #endif
- }
-
-! #if defined(sparc) && !defined(__linux__)
- int readmem(kmem, buf, vad, len)
- int kmem, len;
- #ifdef AFS_SUN57_ENV
-***************
-*** 1990,1996 ****
- }
- }
- #else
-! #if defined(sparc)
- #ifndef AFS_SUN5_ENV
- if (mem) {
- #endif
---- 1993,1999 ----
- }
- }
- #else
-! #if defined(sparc) && !defined(__linux__)
- #ifndef AFS_SUN5_ENV
- if (mem) {
- #endif
-***************
-*** 2103,2109 ****
- #else /* AFS_KDUMP_LIB */
- int fd;
-
-! #if defined(sparc)
- #ifndef AFS_SUN5_ENV
- if (mem) {
- #endif
---- 2106,2112 ----
- #else /* AFS_KDUMP_LIB */
- int fd;
-
-! #if defined(sparc) && !defined(__linux__)
- #ifndef AFS_SUN5_ENV
- if (mem) {
- #endif
-*** src/volser/volmain.c 09:50:51 1.1.1.2
---- src/volser/volmain.c 10:48:14 1.3
-***************
-*** 163,169 ****
- #ifndef AFS_LINUX20_ENV
- old = signal(SIGSYS, SIG_IGN);
- #endif
-! rcode = syscall (31 /* AFS_SYSCALL */, 28 /* AFSCALL_CALL */, a3, a4, a5);
- #ifndef AFS_LINUX20_ENV
- signal(SIGSYS, old);
- #endif
---- 163,169 ----
- #ifndef AFS_LINUX20_ENV
- old = signal(SIGSYS, SIG_IGN);
- #endif
-! rcode = syscall (AFS_SYSCALL /* AFS_SYSCALL */, 28 /* AFSCALL_CALL */, a3, a4, a5);
- #ifndef AFS_LINUX20_ENV
- signal(SIGSYS, old);
- #endif