Commit 7b76b149 authored by Linus Torvalds's avatar Linus Torvalds

Import 2.1.45

parent 507e819f
/* $Id: process.c,v 1.98 1997/05/14 20:44:54 davem Exp $
/* $Id: process.c,v 1.99 1997/07/17 02:20:13 davem Exp $
* linux/arch/sparc/kernel/process.c
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
......
/* $Id: sys_sunos.c,v 1.79 1997/04/23 23:01:15 ecd Exp $
/* $Id: sys_sunos.c,v 1.80 1997/07/17 02:20:22 davem Exp $
* sys_sunos.c: SunOS specific syscall compatibility support.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
......
/* $Id: ioctl32.c,v 1.12 1997/07/09 15:05:28 davem Exp $
/* $Id: ioctl32.c,v 1.13 1997/07/17 02:20:38 davem Exp $
* ioctl32.c: Conversion between 32bit and 64bit native ioctls.
*
* Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
......
/* $Id: process.c,v 1.28 1997/07/13 18:53:53 davem Exp $
/* $Id: process.c,v 1.29 1997/07/17 02:20:40 davem Exp $
* arch/sparc64/kernel/process.c
*
* Copyright (C) 1995, 1996 David S. Miller (davem@caip.rutgers.edu)
......
/* $Id: sunos_ioctl32.c,v 1.3 1997/07/09 10:59:55 jj Exp $
/* $Id: sunos_ioctl32.c,v 1.4 1997/07/17 02:20:43 davem Exp $
* sunos_ioctl32.c: SunOS ioctl compatability on sparc64.
*
* Copyright (C) 1995 Miguel de Icaza (miguel@nuclecu.unam.mx)
......
/* $Id: sys_sparc32.c,v 1.42 1997/07/05 09:52:36 davem Exp $
/* $Id: sys_sparc32.c,v 1.43 1997/07/17 02:20:45 davem Exp $
* sys_sparc32.c: Conversion between 32bit and 64bit native syscalls.
*
* Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
......
/* $Id: sys_sunos32.c,v 1.2 1997/07/05 07:09:16 davem Exp $
/* $Id: sys_sunos32.c,v 1.3 1997/07/17 02:20:48 davem Exp $
* sys_sunos32.c: SunOS binary compatability layer on sparc64.
*
* Copyright (C) 1995, 1996, 1997 David S. Miller (davem@caip.rutgers.edu)
......
# $Id: Makefile,v 1.12 1997/06/25 10:12:18 jj Exp $
# $Id: Makefile,v 1.13 1997/07/16 10:12:03 jj Exp $
# Makefile for Sparc library files..
#
......@@ -6,7 +6,7 @@ CFLAGS := $(CFLAGS) -ansi
OBJS = blockops.o locks.o strlen.o strncmp.o \
memscan.o strncpy_from_user.o strlen_user.o memcmp.o checksum.o \
VIScopy.o VISbzero.o VISmemset.o
VIScopy.o VISbzero.o VISmemset.o VIScsum.o
lib.a: $(OBJS)
$(AR) rcs lib.a $(OBJS)
......
This diff is collapsed.
......@@ -25,223 +25,12 @@
* into the accumulated sum. The following is much better.
*
* This should run at max bandwidth for ecache hits, a better
* technique is to use VIS and fpu operations somehow, but
* this requires more reasoning on my part...
*
* Assuming ecache hits and branches predicted well, this
* can be expected to run at a rate of 16 cycles per 64-bytes
* of data summed. (the old code summed 32 bytes in 20
* cycles, with numerous bubbles and unnecessary stalls)
* technique is to use VIS and fpu operations. This is already
* done for csum_partial, needs to be written for the copy stuff
* still.
*/
#define CSUM_ECACHE_LOAD(buf, offset, t0, t1, t2, t3, t4, t5, t6, t7) \
ldx [buf + offset + 0x00], t0; \
ldx [buf + offset + 0x08], t1; \
ldx [buf + offset + 0x10], t2; \
ldx [buf + offset + 0x18], t3; \
ldx [buf + offset + 0x20], t4; \
ldx [buf + offset + 0x28], t5; \
ldx [buf + offset + 0x30], t6; \
ldx [buf + offset + 0x38], t7; \
nop; nop; /* THIS IS CRITICAL!!!!!!!!! */
#define CSUM_ECACHE_BLOCK_LDNEXT(buf, offset, sum, t0, t1, t2, t3, t4, t5, t6, t7) \
addcc sum, t0, sum; \
bcc,pt %xcc, 11f; \
ldx [buf + offset + 0x00], t0; \
add sum, 1, sum; \
11: addcc sum, t1, sum; \
bcc,pt %xcc, 12f; \
ldx [buf + offset + 0x08], t1; \
add sum, 1, sum; \
12: addcc sum, t2, sum; \
bcc,pt %xcc, 13f; \
ldx [buf + offset + 0x10], t2; \
add sum, 1, sum; \
13: addcc sum, t3, sum; \
bcc,pt %xcc, 14f; \
ldx [buf + offset + 0x18], t3; \
add sum, 1, sum; \
14: addcc sum, t4, sum; \
bcc,pt %xcc, 15f; \
ldx [buf + offset + 0x20], t4; \
add sum, 1, sum; \
15: addcc sum, t5, sum; \
bcc,pt %xcc, 16f; \
ldx [buf + offset + 0x28], t5; \
add sum, 1, sum; \
16: addcc sum, t6, sum; \
bcc,pt %xcc, 17f; \
ldx [buf + offset + 0x30], t6; \
add sum, 1, sum; \
17: addcc sum, t7, sum; \
bcc,pt %xcc, 18f; \
ldx [buf + offset + 0x38], t7; \
add sum, 1, sum; \
18: nop; nop; /* DO NOT TOUCH! */
#define CSUM_ECACHE_BLOCK(sum, t0, t1, t2, t3, t4, t5, t6, t7) \
addcc sum, t0, sum; \
bcs,a,pn %xcc, 21f; \
add sum, 1, sum; \
21: addcc sum, t1, sum; \
bcs,a,pn %xcc, 22f; \
add sum, 1, sum; \
22: addcc sum, t2, sum; \
bcs,a,pn %xcc, 23f; \
add sum, 1, sum; \
23: addcc sum, t3, sum; \
bcs,a,pn %xcc, 24f; \
add sum, 1, sum; \
24: addcc sum, t4, sum; \
bcs,a,pn %xcc, 25f; \
add sum, 1, sum; \
25: addcc sum, t5, sum; \
bcs,a,pn %xcc, 26f; \
add sum, 1, sum; \
26: addcc sum, t6, sum; \
bcs,a,pn %xcc, 27f; \
add sum, 1, sum; \
27: addcc sum, t7, sum; \
bcs,a,pn %xcc, 28f; \
add sum, 1, sum; \
28:
#define CSUM_LASTCHUNK(buf, offset, sum, t0, t1) \
ldx [buf - offset - 0x08], t0; \
ldx [buf - offset - 0x00], t1; \
addcc t0, sum, sum; \
bcs,a,pn %xcc, 31f; \
add sum, 1, sum; \
31: addcc t1, sum, sum; \
bcs,a,pn %xcc, 32f; \
add sum, 1, sum; \
32:
.text
/* Keep this garbage from swiping the icache. */
csum_partial_end_cruft:
andcc %o1, 8, %g0 ! IEU1 Group
be,pn %icc, 1f ! CTI
and %o1, 4, %g5 ! IEU0
ldx [%o0 + 0x00], %g2 ! Load Group
add %o0, 0x8, %o0 ! IEU0
addcc %g2, %o2, %o2 ! IEU1 Group + 2 bubbles
bcs,a,pn %xcc, 1f ! CTI
add %o2, 1, %o2 ! IEU0 4 clocks (mispredict)
1: andcc %o1, 2, %g0 ! IEU1 Group
brz,pn %g5, 1f ! CTI Group (needs IEU1)
clr %g2 ! IEU0
ld [%o0], %g2 ! Load
add %o0, 4, %o0 ! IEU0 Group
sllx %g2, 32, %g2 ! IEU0 Group + 2 bubbles
1: and %o1, 1, %o1 ! IEU1
be,pn %icc, 1f ! CTI
clr %o4 ! IEU0 Group
lduh [%o0], %o4 ! Load
add %o0, 2, %o0 ! IEU1
sll %o4, 16, %o4 ! IEU0 Group + 2 bubbles
1: brz,pn %o1, 1f ! CTI
clr %o5 ! IEU1
ldub [%o0], %o5 ! Load Group
sll %o5, 8, %o5 ! IEU0 Group + 2 bubbles
1: or %g2, %o4, %o4 ! IEU1
or %o5, %o4, %o4 ! IEU0 Group
addcc %o4, %o2, %o2 ! IEU1 Group (regdep)
bcc,pt %xcc, cfold ! CTI
sethi %uhi(PAGE_OFFSET), %g4 ! IEU0
1: b,pt %xcc, cfold ! CTI Group
add %o2, 1, %o2 ! IEU0
csum_partial_fixit:
bl,pn %icc, cpte ! CTI Group
and %o1, 0xf, %o3 ! IEU0
andcc %o0, 0x2, %g0 ! IEU1
be,pn %icc, 1f ! CTI Group
and %o0, 0x4, %g7 ! IEU0
lduh [%o0 + 0x00], %g2 ! Load
sub %o1, 2, %o1 ! IEU0 Group
addcc %o0, 2, %o0 ! IEU1
and %o0, 0x4, %g7 ! IEU0 Group
sll %g2, 16, %g2 ! IEU0 Group (no load stall)
addcc %g2, %o2, %o2 ! IEU1 Group (regdep)
bcc,pt %icc, 0f ! CTI
andn %o1, 0xff, %o3 ! IEU0
srl %o2, 16, %g2 ! IEU0 Group
b,pt %xcc, 9f ! CTI
add %g2, 1, %g2 ! IEU1
0: srl %o2, 16, %g2 ! IEU0 Group 8-(
9: sll %o2, 16, %o2 ! IEU0 Group 8-(
sll %g2, 16, %g3 ! IEU0 Group 8-(
srl %o2, 16, %o2 ! IEU0 Group 8-(
or %g3, %o2, %o2 ! IEU1
1: brnz,pt %g7, 2f ! CTI Group
sub %o1, 4, %o1 ! IEU0
b,pt %xcc, csum_partial_aligned ! CTI Group
add %o1, 4, %o1 ! IEU0
2: ld [%o0 + 0x00], %g2 ! Load Group
add %o0, 4, %o0 ! IEU0
andn %o1, 0xff, %o3 ! IEU1
addcc %g2, %o2, %o2 ! IEU1 Group + 2 bubbles
bcc,pt %xcc, csum_partial_aligned ! CTI
nop ! IEU0
b,pt %xcc, csum_partial_aligned ! CTI Group
add %o2, 1, %o2 ! IEU0
.align 32
.globl csum_partial
csum_partial: /* %o0=buf, %o1=len, %o2=sum */
andcc %o0, 0x7, %g0 ! IEU1 Group
srl %o1, 0, %o1 ! IEU0
srl %o2, 0, %o2 ! IEU0 Group
be,pt %icc, csum_partial_aligned ! CTI
andn %o1, 0xff, %o3 ! IEU1
b,pt %xcc, csum_partial_fixit ! CTI Group
cmp %o1, 6 ! IEU0
nop
csum_partial_aligned:
brz,pt %o3, 3f ! CTI Group
and %o1, 0xf0, %g1 ! IEU0
5: CSUM_ECACHE_LOAD( %o0, 0x000, %o4, %o5, %g2, %g3, %g4, %g5, %g1, %g7)
CSUM_ECACHE_BLOCK_LDNEXT(%o0, 0x040, %o2, %o4, %o5, %g2, %g3, %g4, %g5, %g1, %g7)
CSUM_ECACHE_BLOCK_LDNEXT(%o0, 0x080, %o2, %o4, %o5, %g2, %g3, %g4, %g5, %g1, %g7)
CSUM_ECACHE_BLOCK_LDNEXT(%o0, 0x0c0, %o2, %o4, %o5, %g2, %g3, %g4, %g5, %g1, %g7)
CSUM_ECACHE_BLOCK( %o2, %o4, %o5, %g2, %g3, %g4, %g5, %g1, %g7)
subcc %o3, 256, %o3 ! IEU1 Group
bne,pt %icc, 5b ! CTI
add %o0, 256, %o0 ! IEU0
and %o1, 0xf0, %g1 ! IEU0 Group
3: brz,pn %g1, cpte ! CTI
and %o1, 0xf, %o3 ! IEU1 Group
10: rd %pc, %g7 ! LSU Group + 4 clocks
sll %g1, 1, %o4 ! IEU0 Group
sub %g7, %o4, %g7 ! IEU1
jmp %g7 + %lo(cpte - 10b) ! CTI Group brk forced
add %o0, %g1, %o0 ! IEU0
cptbl: CSUM_LASTCHUNK(%o0, 0xe8, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0xd8, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0xc8, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0xb8, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0xa8, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x98, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x88, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x78, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x68, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x58, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x48, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x38, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x28, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x18, %o2, %g2, %g3)
CSUM_LASTCHUNK(%o0, 0x08, %o2, %g2, %g3)
cpte: brnz,pn %o3, csum_partial_end_cruft ! CTI Group
sethi %uhi(PAGE_OFFSET), %g4 ! IEU0
cfold: sllx %o2, 32, %o0 ! IEU0 Group
addcc %o2, %o0, %o0 ! IEU1 Group (regdep)
srlx %o0, 32, %o0 ! IEU0 Group (regdep)
bcs,a,pn %xcc, 1f ! CTI
add %o0, 1, %o0 ! IEU1 4 clocks (mispredict)
1: retl ! CTI Group brk forced
sllx %g4, 32, %g4 ! IEU0 Group
.globl __csum_partial_copy_start, __csum_partial_copy_end
__csum_partial_copy_start:
......
/* $Id: fault.c,v 1.17 1997/07/04 01:41:10 davem Exp $
/* $Id: fault.c,v 1.18 1997/07/17 02:20:56 davem Exp $
* arch/sparc64/mm/fault.c: Page fault handlers for the 64-bit Sparc.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
......
......@@ -318,7 +318,7 @@ static int loop_set_fd(struct loop_device *lo, kdev_t dev, unsigned int arg)
}
lo->lo_inode = inode;
lo_inode->i_count++;
lo->lo_inode->i_count++;
lo->transfer = NULL;
figure_loop_size(lo);
MOD_INC_USE_COUNT;
......
/* $Id: bwtwo.c,v 1.17 1997/06/06 10:56:28 jj Exp $
/* $Id: bwtwo.c,v 1.18 1997/07/17 02:21:43 davem Exp $
* bwtwo.c: bwtwo console driver
*
* Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
......
/* $Id: cgfourteen.c,v 1.23 1997/06/06 10:56:29 jj Exp $
/* $Id: cgfourteen.c,v 1.24 1997/07/17 02:21:44 davem Exp $
* cgfourteen.c: Sun SparcStation console support.
*
* Copyright (C) 1995 Miguel de Icaza (miguel@nuclecu.unam.mx)
......
/* $Id: cgsix.c,v 1.34 1997/07/15 09:48:50 jj Exp $
/* $Id: cgsix.c,v 1.35 1997/07/17 02:21:45 davem Exp $
* cgsix.c: cgsix frame buffer driver
*
* Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
......
/* $Id: cgthree.c,v 1.22 1997/06/06 10:56:30 jj Exp $
/* $Id: cgthree.c,v 1.23 1997/07/17 02:21:46 davem Exp $
* cgtree.c: cg3 frame buffer driver
*
* Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
......
/* $Id: creator.c,v 1.6 1997/07/15 09:48:49 jj Exp $
/* $Id: creator.c,v 1.7 1997/07/17 02:21:47 davem Exp $
* creator.c: Creator/Creator3D frame buffer driver
*
* Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
......
/* $Id: leo.c,v 1.20 1997/07/15 09:48:46 jj Exp $
/* $Id: leo.c,v 1.21 1997/07/17 02:21:48 davem Exp $
* leo.c: SUNW,leo 24/8bit frame buffer driver
*
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
......
/* $Id: sunfb.c,v 1.25 1997/07/01 09:12:06 jj Exp $
/* $Id: sunfb.c,v 1.26 1997/07/17 02:21:48 davem Exp $
* sunfb.c: Sun generic frame buffer support.
*
* Copyright (C) 1995, 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
......
/* $Id: tcx.c,v 1.16 1997/06/06 10:56:31 jj Exp $
/* $Id: tcx.c,v 1.17 1997/07/17 02:21:50 davem Exp $
* tcx.c: SUNW,tcx 24/8bit frame buffer driver
*
* Copyright (C) 1996 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
......
/* $Id: weitek.c,v 1.13 1997/06/06 10:56:31 jj Exp $
/* $Id: weitek.c,v 1.14 1997/07/17 02:21:53 davem Exp $
* weitek.c: Tadpole P9100/P9000 console driver
*
* Copyright (C) 1996 David Redman (djhr@tadpole.co.uk)
......
/* $Id: advansys.h,v 1997/05/28 00:23:06 bobf Exp bobf $ */
/* $Id: advansys.h,v 1.6 1997/05/30 19:25:12 davem Exp $ */
/*
* advansys.h - Linux Host Driver for AdvanSys SCSI Adapters
......
/*
* $Id: nfsroot.c,v 1.37 1997/06/04 08:28:10 davem Exp $
* $Id: nfsroot.c,v 1.38 1997/07/17 03:21:06 davem Exp $
*
* Copyright (C) 1995, 1996 Gero Kuhlmann <gero@gkminix.han.de>
*
......@@ -78,7 +78,6 @@
#include <asm/param.h>
#include <linux/utsname.h>
#include <linux/nametrans.h>
#include <linux/in.h>
#include <linux/if.h>
#include <linux/inet.h>
......@@ -833,9 +832,6 @@ __initfunc(static void root_do_bootp_ext(u8 *ext))
root_bootp_string(nfs_path, ext+1, *ext, NFS_MAXPATHLEN);
break;
}
#ifdef CONFIG_TRANS_NAMES
translations_dirty = 1;
#endif
}
......@@ -1258,9 +1254,6 @@ __initfunc(static void root_nfs_addrs(char *addrs))
system_utsname.domainname[0] = '\0';
user_dev_name[0] = '\0';
bootp_flag = rarp_flag = 1;
#ifdef CONFIG_TRANS_NAMES
translations_dirty = 1;
#endif
/* The following is just a shortcut for automatic IP configuration */
if (!strcmp(addrs, "bootp")) {
......@@ -1306,9 +1299,6 @@ __initfunc(static void root_nfs_addrs(char *addrs))
}
strncpy(system_utsname.nodename, ip, __NEW_UTS_LEN);
system_utsname.nodename[__NEW_UTS_LEN] = '\0';
#ifdef CONFIG_TRANS_NAMES
translations_dirty = 1;
#endif
break;
case 5:
strncpy(user_dev_name, ip, IFNAMSIZ);
......@@ -1342,9 +1332,6 @@ __initfunc(static int root_nfs_setup(void))
if (!system_utsname.nodename[0]) {
strncpy(system_utsname.nodename, in_ntoa(myaddr), __NEW_UTS_LEN);
system_utsname.nodename[__NEW_UTS_LEN] = '\0';
#ifdef CONFIG_TRANS_NAMES
translations_dirty = 1;
#endif
}
/* Set the correct netmask */
......
/* $Id: openpromfs.c,v 1.17 1997/07/15 05:35:05 davem Exp $
/* $Id: openpromfs.c,v 1.18 1997/07/17 02:24:01 davem Exp $
* openpromfs.c: /proc/openprom handling routines
*
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
......
......@@ -6,7 +6,7 @@
* Laboratory for Computer Science Research Computing Facility
* Rutgers, The State University of New Jersey
*
* $Id: ufs_file.c,v 1.8 1997/06/05 01:29:09 davem Exp $
* $Id: ufs_file.c,v 1.9 1997/07/17 02:24:13 davem Exp $
*
*/
......
......@@ -6,7 +6,7 @@
* Laboratory for Computer Science Research Computing Facility
* Rutgers, The State University of New Jersey
*
* $Id: ufs_inode.c,v 1.8 1997/06/04 08:28:28 davem Exp $
* $Id: ufs_inode.c,v 1.9 1997/07/17 02:24:14 davem Exp $
*
*/
......
......@@ -6,7 +6,7 @@
* Laboratory for Computer Science Research Computing Facility
* Rutgers, The State University of New Jersey
*
* $Id: ufs_namei.c,v 1.7 1996/06/01 14:56:49 ecd Exp $
* $Id: ufs_namei.c,v 1.8 1997/07/17 02:24:14 davem Exp $
*
*/
......
......@@ -8,7 +8,7 @@
*
* Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be)
*
* $Id: ufs_super.c,v 1.24 1997/06/04 08:28:29 davem Exp $
* $Id: ufs_super.c,v 1.25 1997/07/17 02:24:15 davem Exp $
*
*/
......
/* $Id: namei.h,v 1.5 1997/06/07 08:32:54 ecd Exp $
/* $Id: namei.h,v 1.6 1997/07/17 02:24:25 davem Exp $
* linux/include/asm-sparc/namei.h
*
* Routines to handle famous /usr/gnemul/s*.
......
/* $Id: namei.h,v 1.4 1997/06/07 08:32:56 ecd Exp $
/* $Id: namei.h,v 1.5 1997/07/17 02:24:28 davem Exp $
* linux/include/asm-sparc64/namei.h
*
* Routines to handle famous /usr/gnemul/s*.
......
......@@ -6,7 +6,7 @@
* Laboratory for Computer Science Research Computing Facility
* Rutgers, The State University of New Jersey
*
* $Id: ufs_fs.h,v 1.7 1996/08/13 19:27:59 ecd Exp $
* $Id: ufs_fs.h,v 1.8 1997/07/17 02:17:54 davem Exp $
*
*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment