diff -ur linux/Documentation/Configure.help linux-sh-cvs/Documentation/Configure.help
--- linux/Documentation/Configure.help Fri Dec 21 12:41:53 2001
+++ linux-sh-cvs/Documentation/Configure.help Thu Jan 24 05:15:29 2002
@@ -10180,6 +10180,12 @@
instead of an internal one. Disabling this option will save some
memory by making the code size smaller. If unsure, say Y.
+Support for Dreamcast Broad Band Adaptor
+CONFIG_8139TOO_DREAMCAST
+ This enables support for the SEGA Broad Band Adaptor for Dreamcast.
+ It uses 16KB buffer and doesn't support mapping main memory to DMA.
+ If unsure, say N.
+
SiS 900/7016 PCI Fast Ethernet Adapter support
CONFIG_SIS900
This is a driver for the Fast Ethernet PCI network cards based on
@@ -24081,6 +24087,17 @@
. There is a
Dreamcast project is at .
+# Remove overdrive
+# Add SH7751 STB1_Harp, CAT68701, BigSur, ADX
+
+SH-2000
+CONFIG_SH_SH2000
+ SH-2000 is a single-board computer based around SH7709A chip
+ intended for embedded applications.
+ It has an Ethernet interface (CS8900A), direct connected
+ Compact Flash socket, three serial ports and PC-104 bus.
+ More information at .
+
BareCPU
CONFIG_SH_UNKNOWN
"Bare CPU" aka "unknown" means an SH-based system which is not one
@@ -24124,6 +24141,14 @@
CONFIG_CPU_SUBTYPE_SH7750
Select SH7750 if you have a 200 Mhz SH-4 HD6417750 CPU.
+SH7751
+CONFIG_CPU_SUBTYPE_SH7751
+ Select SH7750 if you have a 166 Mhz SH-4 HD6417751 CPU.
+
+ST40STB1
+CONFIG_CPU_SUBTYPE_ST40STB1
+ Select ST40STB1 if you have a ST40STB1 CPU.
+
Physical memory start address
CONFIG_MEMORY_START
Computers built with Hitachi SuperH processors always
@@ -24188,7 +24213,7 @@
The default setting of the HD64465 IO base address is 0xb0000000.
Do not change this unless you know what you are doing.
-
+
Early printk support
CONFIG_SH_EARLY_PRINTK
Say Y here to redirect kernel printk messages to the serial port
diff -ur linux/Documentation/cachetlb.txt linux-sh-cvs/Documentation/cachetlb.txt
--- linux/Documentation/cachetlb.txt Fri Dec 21 12:41:53 2001
+++ linux-sh-cvs/Documentation/cachetlb.txt Thu Jan 24 05:15:32 2002
@@ -222,7 +222,7 @@
this value.
NOTE: This does not fix shared mmaps, check out the sparc64 port for
-one way to solve this (in particular SPARC_FLAG_MMAPSHARED).
+one way to solve this (in particular arch_get_unmapped_area).
Next, you have two methods to solve the D-cache aliasing issue for all
other cases. Please keep in mind that fact that, for a given page
diff -ur linux/Makefile linux-sh-cvs/Makefile
--- linux/Makefile Fri Dec 21 12:41:53 2001
+++ linux-sh-cvs/Makefile Thu Jan 24 05:15:28 2002
@@ -184,6 +184,7 @@
DRIVERS-$(CONFIG_MD) += drivers/md/mddev.o
DRIVERS-$(CONFIG_BLUEZ) += drivers/bluetooth/bluetooth.o
DRIVERS-$(CONFIG_HOTPLUG_PCI) += drivers/hotplug/vmlinux-obj.o
+DRIVERS-$(CONFIG_MAPLE) += drivers/maple/maplebus.o
DRIVERS := $(DRIVERS-y)
diff -ur linux/arch/sh/Makefile linux-sh-cvs/arch/sh/Makefile
--- linux/arch/sh/Makefile Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/Makefile Tue Oct 16 15:39:50 2001
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.6 2000/06/10 03:03:52 gniibe Exp $
+# $Id: Makefile,v 1.1.1.1.2.1 2001/10/16 19:39:50 mrbrown Exp $
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
diff -ur linux/arch/sh/config.in linux-sh-cvs/arch/sh/config.in
--- linux/arch/sh/config.in Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/config.in Fri Nov 2 19:52:47 2001
@@ -189,7 +189,7 @@
if [ "$CONFIG_PCI_GODIRECT" = "y" -o "$CONFIG_PCI_GOANY" = "y" ]; then
define_bool CONFIG_PCI_DIRECT y
fi
- define_bool CONFIG_SH_PCIDMA_NONCOHERENT n
+ bool 'Cache and PCI noncoherent' CONFIG_SH_PCIDMA_NONCOHERENT n
fi
source drivers/pci/Config.in
diff -ur linux/arch/sh/kernel/cf-enabler.c linux-sh-cvs/arch/sh/kernel/cf-enabler.c
--- linux/arch/sh/kernel/cf-enabler.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/cf-enabler.c Mon Oct 15 16:44:47 2001
@@ -1,4 +1,4 @@
-/* $Id: cf-enabler.c,v 1.8 2001/07/18 12:32:21 gniibe Exp $
+/* $Id: cf-enabler.c,v 1.1.1.1 2001/10/15 20:44:47 mrbrown Exp $
*
* linux/drivers/block/cf-enabler.c
*
diff -ur linux/arch/sh/kernel/entry.S linux-sh-cvs/arch/sh/kernel/entry.S
--- linux/arch/sh/kernel/entry.S Mon Oct 8 13:39:18 2001
+++ linux-sh-cvs/arch/sh/kernel/entry.S Thu Jan 24 19:51:42 2002
@@ -1,4 +1,4 @@
-/* $Id: entry.S,v 1.71 2001/07/27 11:47:50 gniibe Exp $
+/* $Id: entry.S,v 1.1.1.1.2.1 2002/01/25 00:51:42 gniibe Exp $
*
* linux/arch/sh/entry.S
*
@@ -66,7 +66,6 @@
tsk_ptrace = 24
PT_TRACESYS = 0x00000002
-PF_USEDFPU = 0x00100000
ENOSYS = 38
EINVAL = 22
@@ -567,12 +566,6 @@
.align 2
restore_all:
-#if defined(__SH4__)
- mov.l __fpu_prepare_fd, r0
- jsr @r0
- stc sr, r4
-#endif
- !
mov.l @r15+, r0
mov.l @r15+, r1
mov.l @r15+, r2
@@ -585,7 +578,7 @@
stc sr, r8
mov.l __blrb_flags, r9 ! BL =1, RB=1
or r9, r8
- ldc r8, sr ! here, change the register bank
+ ldc r8, sr ! here, change the register bank
!
mov.l @r15+, r8
mov.l @r15+, r9
@@ -594,25 +587,25 @@
mov.l @r15+, r12
mov.l @r15+, r13
mov.l @r15+, r14
- mov.l @r15+, k4 ! original stack pointer
+ mov.l @r15+, k4 ! original stack pointer
ldc.l @r15+, spc
lds.l @r15+, pr
- mov.l @r15+, k3 ! original SR
+ mov.l @r15+, k3 ! original SR
ldc.l @r15+, gbr
lds.l @r15+, mach
lds.l @r15+, macl
- add #4, r15 ! Skip syscall number
+ add #4, r15 ! Skip syscall number
!
! Calculate new SR value
- mov k3, k2 ! original SR value
+ mov k3, k2 ! original SR value
mov.l 1f, k1
stc sr, k0
- and k1, k0 ! Get current FD-bit
+ and k1, k0 ! Get current FD-bit
mov.l 2f, k1
- and k1, k2 ! Mask orignal SR value
- or k0, k2 ! Inherit current FD-bit
+ and k1, k2 ! Mask orignal SR value
+ or k0, k2 ! Inherit current FD-bit
!
- mov k3, k0 ! Calculate IMASK-bits
+ mov k3, k0 ! Calculate IMASK-bits
shlr2 k0
and #0x3c, k0
cmp/eq #0x3c, k0
@@ -620,69 +613,15 @@
shll2 k0
mov g_imask, k0
!
-7: or k0, k2 ! Set the IMASK-bits
+7: or k0, k2 ! Set the IMASK-bits
ldc k2, ssr
!
-#if defined(__SH4__)
- shll k2
- shll k2
- bf 9f ! user mode
- /* Kernel to kernel transition */
- mov.l 1f, k1
- tst k1, k3
- bf 9f ! it hadn't FPU
- ! Kernel to kernel and FPU was used
- ! There's the case we don't get FPU now
- stc sr, k2
- tst k1, k2
- bt 8f
- ! We need to grab FPU here
- xor k1, k2
- ldc k2, sr ! Grab FPU
- mov.l __init_task_flags, k1
- mov.l @k1, k2
- mov.l __PF_USEDFPU, k0
- or k0, k2
- mov.l k2, @k1 ! Set init_task.flags |= PF_USEDFPU
- !
- ! Restoring FPU...
- !
-8: mov.l 3f, k1
- lds k1, fpscr
- fmov.s @r15+, fr0
- fmov.s @r15+, fr1
- fmov.s @r15+, fr2
- fmov.s @r15+, fr3
- fmov.s @r15+, fr4
- fmov.s @r15+, fr5
- fmov.s @r15+, fr6
- fmov.s @r15+, fr7
- fmov.s @r15+, fr8
- fmov.s @r15+, fr9
- fmov.s @r15+, fr10
- fmov.s @r15+, fr11
- fmov.s @r15+, fr12
- fmov.s @r15+, fr13
- fmov.s @r15+, fr14
- fmov.s @r15+, fr15
- lds.l @r15+, fpscr
- lds.l @r15+, fpul
-9:
-#endif
mov k4, r15
rte
nop
.align 2
__blrb_flags: .long 0x30000000
-#if defined(__SH4__)
-__fpu_prepare_fd:
- .long SYMBOL_NAME(fpu_prepare_fd)
-__init_task_flags:
- .long SYMBOL_NAME(init_task_union)+4
-__PF_USEDFPU:
- .long PF_USEDFPU
-#endif
1: .long 0x00008000 ! FD
2: .long 0xffff7f0f ! ~(IMASK+FD)
3: .long 0x00080000 ! SZ=0, PR=1
@@ -732,61 +671,21 @@
! Using k0, k1 for scratch registers (r0_bank1, r1_bank),
! save all registers onto stack.
!
- stc ssr, k0 ! from kernel space?
- shll k0 ! Check MD bit (bit30) by shifting it into the T bit
- shll k0
-#if defined(__SH4__)
- bf/s 8f ! it's from user to kernel transition
- mov r15, k0 ! save original stack to k0
- /* It's a kernel to kernel transition. */
- /* Is the FPU disabled? */
- mov.l 2f, k1
- stc ssr, k0
- tst k1, k0
- mov.l 4f, k1
- bf/s 9f ! FPU is not enabled, no need to save it
- mov r15, k0 ! save original stack to k0
- ! FPU is enabled, save it
- ! /* XXX: Need to save another bank of FPU if all FPU feature is used */
- ! /* Currently it's not the case for GCC (only udivsi3_i4, divsi3_i4) */
- sts.l fpul, @-r15
- sts.l fpscr, @-r15
- mov.l 6f, k1
- lds k1, fpscr
- mov.l 3f, k1
- fmov.s fr15, @-r15
- fmov.s fr14, @-r15
- fmov.s fr13, @-r15
- fmov.s fr12, @-r15
- fmov.s fr11, @-r15
- fmov.s fr10, @-r15
- fmov.s fr9, @-r15
- fmov.s fr8, @-r15
- fmov.s fr7, @-r15
- fmov.s fr6, @-r15
- fmov.s fr5, @-r15
- fmov.s fr4, @-r15
- fmov.s fr3, @-r15
- fmov.s fr2, @-r15
- fmov.s fr1, @-r15
- bra 9f
- fmov.s fr0, @-r15
-#else
- mov.l 3f, k1
- bt/s 9f ! it's a kernel to kernel transition, and skip the FPU save.
- mov r15, k0 ! save original stack to k0 anyway
-#endif
-8: /* User space to kernel */
+ stc ssr, k0 ! Is it from kernel space?
+ shll k0 ! Check MD bit (bit30) by shifting it into...
+ shll k0 ! ...the T bit
+ bt/s 9f ! It's a kernel to kernel transition.
+ mov r15, k0 ! save original stack to k0
+ /* User space to kernel */
mov #0x20, k1
- shll8 k1 ! k1 <= 8192 == THREAD_SIZE
+ shll8 k1 ! k1 <= 8192 == THREAD_SIZE
add current, k1
mov k1, r15 ! change to kernel stack
!
- mov.l 4f, k1 ! let kernel release FPU
-9: ! Save the user registers on the stack.
- ! At this point, k1 should have been set to the new SR value
- mov #-1, k4
- mov.l k4, @-r15 ! syscall_nr (default: -1)
+9: mov #-1, k4
+ mov.l 3f, k1
+ ! Save the user registers on the stack.
+ mov.l k4, @-r15 ! syscall_nr (default: -1)
!
sts.l macl, @-r15
sts.l mach, @-r15
@@ -806,11 +705,11 @@
mov.l r9, @-r15
mov.l r8, @-r15
!
- stc sr, r8 ! Back to normal register bank, and
- or k1, r8 ! Block all interrupts, may release FPU
+ stc sr, r8 ! Back to normal register bank, and
+ or k1, r8 ! Block all interrupts
mov.l 5f, k1
- and k1, r8 ! ...
- ldc r8, sr ! ...changed here.
+ and k1, r8 ! ...
+ ldc r8, sr ! ...changed here.
!
mov.l r7, @-r15
mov.l r6, @-r15
@@ -831,9 +730,7 @@
nop
.align 2
1: .long SYMBOL_NAME(exception_handling_table)
-2: .long 0x00008000 ! FD=1
3: .long 0x000000f0 ! FD=0, IMASK=15
-4: .long 0x000080f0 ! FD=1, IMASK=15
5: .long 0xcfffffff ! RB=0, BL=0
6: .long 0x00080000 ! SZ=0, PR=1
diff -ur linux/arch/sh/kernel/fpu.c linux-sh-cvs/arch/sh/kernel/fpu.c
--- linux/arch/sh/kernel/fpu.c Sun Jan 28 21:56:00 2001
+++ linux-sh-cvs/arch/sh/kernel/fpu.c Thu Jan 24 19:51:42 2002
@@ -1,4 +1,4 @@
-/* $Id: fpu.c,v 1.29 2000/03/22 13:42:10 gniibe Exp $
+/* $Id: fpu.c,v 1.1.1.1.2.1 2002/01/25 00:51:42 gniibe Exp $
*
* linux/arch/sh/kernel/fpu.c
*
@@ -18,6 +18,10 @@
#include
#include
+/*
+ * Save FPU registers onto task structure.
+ * Assume called with FPU enabled (SR.FD=0).
+ */
void
save_fpu(struct task_struct *tsk)
{
@@ -118,7 +122,8 @@
* double precission represents signaling NANS.
*/
-void fpu_init(void)
+static void
+fpu_init(void)
{
asm volatile("lds %0, fpul\n\t"
"lds %1, fpscr\n\t"
@@ -160,15 +165,125 @@
: "r" (0), "r" (FPSCR_INIT));
}
+/**
+ * denormal_to_double - Given denormalized float number,
+ * store double float
+ *
+ * @fpu: Pointer to sh_fpu_hard structure
+ * @n: Index to FP register
+ */
+static void
+denormal_to_double (struct sh_fpu_hard_struct *fpu, int n)
+{
+ unsigned long du, dl;
+ unsigned long x = fpu->fpul;
+ int exp = 1023 - 126;
+
+ if (x != 0 && (x & 0x7f800000) == 0) {
+ du = (x & 0x80000000);
+ while ((x & 0x00800000) == 0) {
+ x <<= 1;
+ exp--;
+ }
+ x &= 0x007fffff;
+ du |= (exp << 20) | (x >> 3);
+ dl = x << 29;
+
+ fpu->fp_regs[n] = du;
+ fpu->fp_regs[n+1] = dl;
+ }
+}
+
+/**
+ * ieee_fpe_handler - Handle denormalized number exception
+ *
+ * @regs: Pointer to register structure
+ *
+ * Returns 1 when it's handled (should not cause exception).
+ */
+static int
+ieee_fpe_handler (struct pt_regs *regs)
+{
+ unsigned short insn = *(unsigned short *) regs->pc;
+ unsigned short finsn;
+ unsigned long nextpc;
+ int nib[4] = {
+ (insn >> 12) & 0xf,
+ (insn >> 8) & 0xf,
+ (insn >> 4) & 0xf,
+ insn & 0xf};
+
+ if (nib[0] == 0xb ||
+ (nib[0] == 0x4 && nib[2] == 0x0 && nib[3] == 0xb)) /* bsr & jsr */
+ regs->pr = regs->pc + 4;
+
+ if (nib[0] == 0xa || nib[0] == 0xb) { /* bra & bsr */
+ nextpc = regs->pc + 4 + ((short) ((insn & 0xfff) << 4) >> 3);
+ finsn = *(unsigned short *) (regs->pc + 2);
+ } else if (nib[0] == 0x8 && nib[1] == 0xd) { /* bt/s */
+ if (regs->sr & 1)
+ nextpc = regs->pc + 4 + ((char) (insn & 0xff) << 1);
+ else
+ nextpc = regs->pc + 4;
+ finsn = *(unsigned short *) (regs->pc + 2);
+ } else if (nib[0] == 0x8 && nib[1] == 0xf) { /* bf/s */
+ if (regs->sr & 1)
+ nextpc = regs->pc + 4;
+ else
+ nextpc = regs->pc + 4 + ((char) (insn & 0xff) << 1);
+ finsn = *(unsigned short *) (regs->pc + 2);
+ } else if (nib[0] == 0x4 && nib[3] == 0xb &&
+ (nib[2] == 0x0 || nib[2] == 0x2)) { /* jmp & jsr */
+ nextpc = regs->regs[nib[1]];
+ finsn = *(unsigned short *) (regs->pc + 2);
+ } else if (nib[0] == 0x0 && nib[3] == 0x3 &&
+ (nib[2] == 0x0 || nib[2] == 0x2)) { /* braf & bsrf */
+ nextpc = regs->pc + 4 + regs->regs[nib[1]];
+ finsn = *(unsigned short *) (regs->pc + 2);
+ } else if (insn == 0x000b) { /* rts */
+ nextpc = regs->pr;
+ finsn = *(unsigned short *) (regs->pc + 2);
+ } else {
+ nextpc = regs->pc + 2;
+ finsn = insn;
+ }
+
+ if ((finsn & 0xf1ff) == 0xf0ad) { /* fcnvsd */
+ struct task_struct *tsk = current;
+
+ save_fpu(tsk);
+ if ((tsk->thread.fpu.hard.fpscr & (1 << 17))) {
+ /* FPU error */
+ denormal_to_double (&tsk->thread.fpu.hard,
+ (finsn >> 8) & 0xf);
+ tsk->thread.fpu.hard.fpscr &=
+ ~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK);
+ grab_fpu();
+ restore_fpu(tsk);
+ tsk->flags |= PF_USEDFPU;
+ } else {
+ tsk->thread.trap_no = 11;
+ tsk->thread.error_code = 0;
+ force_sig(SIGFPE, tsk);
+ }
+
+ regs->pc = nextpc;
+ return 1;
+ }
+
+ return 0;
+}
+
asmlinkage void
do_fpu_error(unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7,
struct pt_regs regs)
{
struct task_struct *tsk = current;
- regs.pc += 2;
+ if (ieee_fpe_handler (®s))
+ return;
- grab_fpu();
+ regs.pc += 2;
save_fpu(tsk);
tsk->thread.trap_no = 11;
tsk->thread.error_code = 0;
@@ -181,102 +296,12 @@
{
struct task_struct *tsk = current;
- if (!user_mode(®s)) {
- if (tsk != &init_task) {
- unlazy_fpu(tsk);
- }
- tsk = &init_task;
- if (tsk->flags & PF_USEDFPU) {
- /*
- * This weird situation can be occurred.
- *
- * There's race condition in __cli:
- *
- * (1) SR --> register
- * (2) Set IMASK of register
- * (3) SR <-- register
- *
- * Between (1) and (2), or (2) and (3) getting
- * interrupt, and interrupt handler (or
- * softirq) may use FPU.
- *
- * Then, SR.FD is overwritten by (3).
- *
- * This results init_task.PF_USEDFPU is on,
- * with SR.FD == 1.
- *
- */
- release_fpu();
- return;
- }
- }
-
grab_fpu();
- if (tsk->used_math) {
- /* Using the FPU again. */
- restore_fpu(tsk);
- } else {
- /* First time FPU user. */
- fpu_init();
- tsk->used_math = 1;
- }
- tsk->flags |= PF_USEDFPU;
- release_fpu();
-}
-
-/*
- * Change current FD flag to set FD flag back to exception
- */
-asmlinkage void
-fpu_prepare_fd(unsigned long sr, unsigned long r5, unsigned long r6,
- unsigned long r7, struct pt_regs regs)
-{
- __cli();
if (!user_mode(®s)) {
- if (init_task.flags & PF_USEDFPU)
- grab_fpu();
- else {
- if (!(sr & SR_FD)) {
- BUG();
- release_fpu();
- }
- }
+ printk(KERN_ERR "BUG: FPU is used in kernel mode.\n");
return;
}
- if (sr & SR_FD) { /* Kernel doesn't grab FPU */
- if (current->flags & PF_USEDFPU)
- grab_fpu();
- else {
- if (init_task.flags & PF_USEDFPU) {
- /*
- * This weird situation can be occurred.
- * See the comment in do_fpu_state_restore.
- */
- grab_fpu();
- save_fpu(&init_task);
- }
- }
- } else {
- if (init_task.flags & PF_USEDFPU)
- save_fpu(&init_task);
- else {
- BUG();
- release_fpu();
- }
- }
-}
-
-/* Short cut for the FPU exception */
-asmlinkage void
-enable_fpu_in_danger(void)
-{
- struct task_struct *tsk = current;
-
- if (tsk != &init_task)
- unlazy_fpu(tsk);
-
- tsk = &init_task;
if (tsk->used_math) {
/* Using the FPU again. */
restore_fpu(tsk);
diff -ur linux/arch/sh/kernel/hd64465_gpio.c linux-sh-cvs/arch/sh/kernel/hd64465_gpio.c
--- linux/arch/sh/kernel/hd64465_gpio.c Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/hd64465_gpio.c Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
/*
- * $Id: hd64465_gpio.c,v 1.2 2001/05/24 00:13:47 gniibe Exp $
+ * $Id: hd64465_gpio.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
* by Greg Banks
* (c) 2000 PocketPenguins Inc
*
diff -ur linux/arch/sh/kernel/head.S linux-sh-cvs/arch/sh/kernel/head.S
--- linux/arch/sh/kernel/head.S Sun Jan 28 21:56:00 2001
+++ linux-sh-cvs/arch/sh/kernel/head.S Thu Jan 24 19:51:42 2002
@@ -1,4 +1,4 @@
-/* $Id: head.S,v 1.17 2000/03/06 12:44:24 gniibe Exp $
+/* $Id: head.S,v 1.1.1.1.2.1 2002/01/25 00:51:42 gniibe Exp $
*
* arch/sh/kernel/head.S
*
@@ -50,12 +50,6 @@
sub r1, r0 !
ldc r0, r7_bank ! ... and init_task
!
-#if defined(__SH4__)
- ! Initialize fpu
- mov.l 7f, r0
- jsr @r0
- nop
-#endif
! Enable cache
mov.l 6f, r0
jsr @r0
@@ -74,12 +68,9 @@
nop
.balign 4
-1: .long 0x400000F0 ! MD=1, RB=0, BL=0, FD=0, IMASK=0xF
+1: .long 0x400080F0 ! MD=1, RB=0, BL=0, FD=1, IMASK=0xF
2: .long SYMBOL_NAME(stack)
3: .long SYMBOL_NAME(__bss_start)
4: .long SYMBOL_NAME(_end)
5: .long SYMBOL_NAME(start_kernel)
6: .long SYMBOL_NAME(cache_init)
-#if defined(__SH4__)
-7: .long SYMBOL_NAME(fpu_init)
-#endif
diff -ur linux/arch/sh/kernel/io_7751se.c linux-sh-cvs/arch/sh/kernel/io_7751se.c
--- linux/arch/sh/kernel/io_7751se.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/io_7751se.c Fri Nov 2 19:52:47 2001
@@ -17,7 +17,7 @@
#include
#include
-#include
+#include
#include
#if 0
@@ -70,7 +70,7 @@
else
return (volatile __u16 *) (PA_SUPERIO + (port << 1));
#endif
- maybebadio(name,port);
+ maybebadio(name,(unsigned long)port);
return (volatile __u16*)port;
}
@@ -276,6 +276,7 @@
/* ISA page descriptor. */
static __u32 sh_isa_memmap[256];
+#if 0
static int
sh_isa_mmap(__u32 start, __u32 length, __u32 offset)
{
@@ -286,12 +287,11 @@
idx = start >> 12;
sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff);
-#if 0
printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n",
start, length, offset, idx, sh_isa_memmap[idx]);
-#endif
return 0;
}
+#endif
unsigned long
sh7751se_isa_port2addr(unsigned long offset)
diff -ur linux/arch/sh/kernel/io_dc.c linux-sh-cvs/arch/sh/kernel/io_dc.c
--- linux/arch/sh/kernel/io_dc.c Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/io_dc.c Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
/*
- * $Id: io_dc.c,v 1.2 2001/05/24 00:13:47 gniibe Exp $
+ * $Id: io_dc.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
* I/O routines for SEGA Dreamcast
*/
diff -ur linux/arch/sh/kernel/io_generic.c linux-sh-cvs/arch/sh/kernel/io_generic.c
--- linux/arch/sh/kernel/io_generic.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/io_generic.c Mon Oct 15 16:44:48 2001
@@ -1,4 +1,4 @@
-/* $Id: io_generic.c,v 1.12 2000/11/14 16:45:11 sugioka Exp $
+/* $Id: io_generic.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
*
* linux/arch/sh/kernel/io_generic.c
*
diff -ur linux/arch/sh/kernel/io_hd64461.c linux-sh-cvs/arch/sh/kernel/io_hd64461.c
--- linux/arch/sh/kernel/io_hd64461.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/io_hd64461.c Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
/*
- * $Id: io_hd64461.c,v 1.6 2000/11/16 23:28:44 yaegashi Exp $
+ * $Id: io_hd64461.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
* Copyright (C) 2000 YAEGASHI Takeshi
* Typical I/O routines for HD64461 system.
*/
diff -ur linux/arch/sh/kernel/io_hd64465.c linux-sh-cvs/arch/sh/kernel/io_hd64465.c
--- linux/arch/sh/kernel/io_hd64465.c Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/io_hd64465.c Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
/*
- * $Id: io_hd64465.c,v 1.7 2001/05/09 07:39:36 gniibe Exp $
+ * $Id: io_hd64465.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
* by Greg Banks
* (c) 2000 PocketPenguins Inc
*
diff -ur linux/arch/sh/kernel/io_se.c linux-sh-cvs/arch/sh/kernel/io_se.c
--- linux/arch/sh/kernel/io_se.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/io_se.c Mon Oct 15 16:44:48 2001
@@ -1,4 +1,4 @@
-/* $Id: io_se.c,v 1.12 2001/08/11 01:23:28 jzs Exp $
+/* $Id: io_se.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
*
* linux/arch/sh/kernel/io_se.c
*
diff -ur linux/arch/sh/kernel/irq.c linux-sh-cvs/arch/sh/kernel/irq.c
--- linux/arch/sh/kernel/irq.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/irq.c Mon Oct 15 16:44:49 2001
@@ -1,4 +1,4 @@
-/* $Id: irq.c,v 1.21 2001/07/17 02:26:53 gniibe Exp $
+/* $Id: irq.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
*
* linux/arch/sh/kernel/irq.c
*
diff -ur linux/arch/sh/kernel/irq_imask.c linux-sh-cvs/arch/sh/kernel/irq_imask.c
--- linux/arch/sh/kernel/irq_imask.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/irq_imask.c Mon Oct 15 16:44:49 2001
@@ -1,4 +1,4 @@
-/* $Id: irq_imask.c,v 1.13 2001/07/12 08:13:56 gniibe Exp $
+/* $Id: irq_imask.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
*
* linux/arch/sh/kernel/irq_imask.c
*
diff -ur linux/arch/sh/kernel/irq_ipr.c linux-sh-cvs/arch/sh/kernel/irq_ipr.c
--- linux/arch/sh/kernel/irq_ipr.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/irq_ipr.c Mon Oct 15 16:44:49 2001
@@ -1,4 +1,4 @@
-/* $Id: irq_ipr.c,v 1.20 2001/07/15 23:26:56 gniibe Exp $
+/* $Id: irq_ipr.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
*
* linux/arch/sh/kernel/irq_ipr.c
*
diff -ur linux/arch/sh/kernel/mach_dc.c linux-sh-cvs/arch/sh/kernel/mach_dc.c
--- linux/arch/sh/kernel/mach_dc.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/mach_dc.c Mon Oct 15 16:44:49 2001
@@ -1,5 +1,5 @@
/*
- * $Id: mach_dc.c,v 1.5 2001/09/01 14:34:31 mrbrown Exp $
+ * $Id: mach_dc.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
* SEGA Dreamcast machine vector
*/
diff -ur linux/arch/sh/kernel/pci-7751se.c linux-sh-cvs/arch/sh/kernel/pci-7751se.c
--- linux/arch/sh/kernel/pci-7751se.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/pci-7751se.c Fri Nov 2 19:52:47 2001
@@ -37,7 +37,6 @@
*/
int __init pcibios_init_platform(void)
{
- unsigned long data;
unsigned long bcr1, wcr1, wcr2, wcr3, mcr;
unsigned short bcr2;
diff -ur linux/arch/sh/kernel/pci-dc.c linux-sh-cvs/arch/sh/kernel/pci-dc.c
--- linux/arch/sh/kernel/pci-dc.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/pci-dc.c Mon Oct 15 16:44:49 2001
@@ -1,5 +1,5 @@
/*
- $ $Id: pci-dc.c,v 1.5 2001/08/24 12:38:19 dwmw2 Exp $
+ $ $Id: pci-dc.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
* Dreamcast PCI: Supports SEGA Broadband Adaptor only.
*/
diff -ur linux/arch/sh/kernel/pcibios.c linux-sh-cvs/arch/sh/kernel/pcibios.c
--- linux/arch/sh/kernel/pcibios.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/pcibios.c Mon Oct 15 16:44:53 2001
@@ -1,5 +1,5 @@
/*
- * $Id: pcibios.c,v 1.1 2001/08/24 12:38:19 dwmw2 Exp $
+ * $Id: pcibios.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* arch/sh/kernel/pcibios.c
*
diff -ur linux/arch/sh/kernel/process.c linux-sh-cvs/arch/sh/kernel/process.c
--- linux/arch/sh/kernel/process.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/process.c Mon Oct 15 16:44:51 2001
@@ -1,4 +1,4 @@
-/* $Id: process.c,v 1.35 2001/10/11 09:18:17 gniibe Exp $
+/* $Id: process.c,v 1.1.1.1 2001/10/15 20:44:51 mrbrown Exp $
*
* linux/arch/sh/kernel/process.c
*
diff -ur linux/arch/sh/kernel/ptrace.c linux-sh-cvs/arch/sh/kernel/ptrace.c
--- linux/arch/sh/kernel/ptrace.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/ptrace.c Mon Oct 15 16:44:51 2001
@@ -1,4 +1,4 @@
-/* $Id: ptrace.c,v 1.13 2001/10/01 02:21:50 gniibe Exp $
+/* $Id: ptrace.c,v 1.1.1.1 2001/10/15 20:44:51 mrbrown Exp $
*
* linux/arch/sh/kernel/ptrace.c
*
diff -ur linux/arch/sh/kernel/rtc.c linux-sh-cvs/arch/sh/kernel/rtc.c
--- linux/arch/sh/kernel/rtc.c Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/rtc.c Tue Dec 11 23:34:02 2001
@@ -46,7 +46,7 @@
} while ((ctrl_inb(RCR1) & RCR1_CF) != 0);
#if RTC_BIT_INVERTED != 0
- /* Work around to avoid reading correct value. */
+ /* Work around to avoid reading incorrect value. */
if (sec128 == RTC_BIT_INVERTED) {
schedule_timeout(1);
goto again;
@@ -81,12 +81,18 @@
goto again;
}
+#if RTC_BIT_INVERTED != 0
+ if ((sec128 & RTC_BIT_INVERTED))
+ sec--;
+#endif
+
tv->tv_sec = mktime(yr100 * 100 + yr, mon, day, hr, min, sec);
- tv->tv_usec = ((sec128 ^ RTC_BIT_INVERTED) * 1000000) / 128;
+ tv->tv_usec = (sec128 * 1000000) / 128;
}
-static int set_rtc_time(unsigned long nowtime)
+int sh_rtc_settimeofday(const struct timeval *tv)
{
+ unsigned long nowtime = tv->tv_sec;
int retval = 0;
int real_seconds, real_minutes, cmos_minutes;
@@ -123,12 +129,3 @@
return retval;
}
-
-int sh_rtc_settimeofday(const struct timeval *tv)
-{
-#if RTC_BIT_INVERTED != 0
- /* This is not accurate, but better than nothing. */
- schedule_timeout(HZ/2);
-#endif
- return set_rtc_time(tv->tv_sec);
-}
diff -ur linux/arch/sh/kernel/setup.c linux-sh-cvs/arch/sh/kernel/setup.c
--- linux/arch/sh/kernel/setup.c Fri Nov 16 21:38:39 2001
+++ linux-sh-cvs/arch/sh/kernel/setup.c Fri Nov 30 18:03:33 2001
@@ -1,4 +1,4 @@
-/* $Id: setup.c,v 1.31 2001/08/23 16:36:40 dwmw2 Exp $
+/* $Id: setup.c,v 1.1.1.1.2.1 2001/11/30 23:03:33 jzs Exp $
*
* linux/arch/sh/kernel/setup.c
*
diff -ur linux/arch/sh/kernel/setup_cqreek.c linux-sh-cvs/arch/sh/kernel/setup_cqreek.c
--- linux/arch/sh/kernel/setup_cqreek.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/setup_cqreek.c Mon Oct 15 16:44:51 2001
@@ -1,4 +1,4 @@
-/* $Id: setup_cqreek.c,v 1.9 2001/07/30 12:43:28 gniibe Exp $
+/* $Id: setup_cqreek.c,v 1.1.1.1 2001/10/15 20:44:51 mrbrown Exp $
*
* arch/sh/kernel/setup_cqreek.c
*
diff -ur linux/arch/sh/kernel/setup_hd64461.c linux-sh-cvs/arch/sh/kernel/setup_hd64461.c
--- linux/arch/sh/kernel/setup_hd64461.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/setup_hd64461.c Mon Oct 15 16:44:52 2001
@@ -1,5 +1,5 @@
/*
- * $Id: setup_hd64461.c,v 1.9 2001/07/15 23:26:56 gniibe Exp $
+ * $Id: setup_hd64461.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
* Copyright (C) 2000 YAEGASHI Takeshi
* Hitachi HD64461 companion chip support
*/
diff -ur linux/arch/sh/kernel/setup_hd64465.c linux-sh-cvs/arch/sh/kernel/setup_hd64465.c
--- linux/arch/sh/kernel/setup_hd64465.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/setup_hd64465.c Mon Oct 15 16:44:52 2001
@@ -1,5 +1,5 @@
/*
- * $Id: setup_hd64465.c,v 1.4 2001/07/15 23:26:56 gniibe Exp $
+ * $Id: setup_hd64465.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
*
* Setup and IRQ handling code for the HD64465 companion chip.
* by Greg Banks
diff -ur linux/arch/sh/kernel/setup_se.c linux-sh-cvs/arch/sh/kernel/setup_se.c
--- linux/arch/sh/kernel/setup_se.c Wed Aug 9 16:59:04 2000
+++ linux-sh-cvs/arch/sh/kernel/setup_se.c Tue Oct 16 15:39:50 2001
@@ -1,4 +1,4 @@
-/* $Id: setup_se.c,v 1.6 2000/05/14 08:41:25 gniibe Exp $
+/* $Id: setup_se.c,v 1.1.1.1.2.1 2001/10/16 19:39:50 mrbrown Exp $
*
* linux/arch/sh/kernel/setup_se.c
*
diff -ur linux/arch/sh/kernel/sh_bios.c linux-sh-cvs/arch/sh/kernel/sh_bios.c
--- linux/arch/sh/kernel/sh_bios.c Sun Jan 28 21:56:00 2001
+++ linux-sh-cvs/arch/sh/kernel/sh_bios.c Mon Oct 15 16:44:52 2001
@@ -1,4 +1,4 @@
-/* $Id: sh_bios.c,v 1.5 2001/01/08 08:42:32 gniibe Exp $
+/* $Id: sh_bios.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
*
* linux/arch/sh/kernel/sh_bios.c
* C interface for trapping into the standard LinuxSH BIOS.
diff -ur linux/arch/sh/kernel/signal.c linux-sh-cvs/arch/sh/kernel/signal.c
--- linux/arch/sh/kernel/signal.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/signal.c Mon Oct 15 16:44:52 2001
@@ -1,4 +1,4 @@
-/* $Id: signal.c,v 1.21 2000/03/11 14:06:21 gniibe Exp $
+/* $Id: signal.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
*
* linux/arch/sh/kernel/signal.c
*
diff -ur linux/arch/sh/kernel/time.c linux-sh-cvs/arch/sh/kernel/time.c
--- linux/arch/sh/kernel/time.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/time.c Mon Oct 15 16:44:50 2001
@@ -1,4 +1,4 @@
-/* $Id: time.c,v 1.30 2001/09/01 14:34:31 mrbrown Exp $
+/* $Id: time.c,v 1.1.1.1 2001/10/15 20:44:50 mrbrown Exp $
*
* linux/arch/sh/kernel/time.c
*
diff -ur linux/arch/sh/kernel/traps.c linux-sh-cvs/arch/sh/kernel/traps.c
--- linux/arch/sh/kernel/traps.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/traps.c Wed Dec 26 14:29:05 2001
@@ -1,4 +1,4 @@
-/* $Id: traps.c,v 1.14 2001/07/24 08:07:10 gniibe Exp $
+/* $Id: traps.c,v 1.1.1.1.2.2 2001/12/26 19:29:05 jzs Exp $
*
* linux/arch/sh/traps.c
*
@@ -300,10 +300,19 @@
/*
* handle an instruction that does an unaligned memory access
* - have to be careful of branch delay-slot instructions that fault
+ * SH3:
* - if the branch would be taken PC points to the branch
* - if the branch would not be taken, PC points to delay-slot
+ * SH4:
+ * - PC always points to delayed branch
* - return 0 if handled, -EFAULT if failed (may not return if in kernel)
*/
+
+/* Macros to determine offset from current PC for branch instructions */
+/* Explicit type coercion is used to force sign extension where needed */
+#define SH_PC_8BIT_OFFSET(instr) ((((signed char)(instr))*2) + 4)
+#define SH_PC_12BIT_OFFSET(instr) ((((signed short)(instr<<4))>>3) + 4)
+
static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
{
u_int rm;
@@ -392,15 +401,27 @@
break;
case 0x0F00: /* bf/s lab */
ret = handle_unaligned_delayslot(regs);
- if (ret==0)
- regs->pc += (instruction&0x00FF)*2 + 4;
+ if (ret==0) {
+#if defined(__SH4__)
+ if ((regs->sr & 0x00000001) != 0)
+ regs->pc += 4; /* next after slot */
+ else
+#endif
+ regs->pc += SH_PC_8BIT_OFFSET(instruction);
+ }
break;
case 0x0900: /* bt lab - no delayslot */
break;
case 0x0D00: /* bt/s lab */
ret = handle_unaligned_delayslot(regs);
- if (ret==0)
- regs->pc += (instruction&0x00FF)*2 + 4;
+ if (ret==0) {
+#if defined(__SH4__)
+ if ((regs->sr & 0x00000001) == 0)
+ regs->pc += 4; /* next after slot */
+ else
+#endif
+ regs->pc += SH_PC_8BIT_OFFSET(instruction);
+ }
break;
}
break;
@@ -408,14 +429,14 @@
case 0xA000: /* bra label */
ret = handle_unaligned_delayslot(regs);
if (ret==0)
- regs->pc += (instruction&0x0FFF)*2 + 4;
+ regs->pc += SH_PC_12BIT_OFFSET(instruction);
break;
case 0xB000: /* bsr label */
ret = handle_unaligned_delayslot(regs);
if (ret==0) {
regs->pr = regs->pc + 4;
- regs->pc += (instruction&0x0FFF)*2 + 4;
+ regs->pc += SH_PC_12BIT_OFFSET(instruction);
}
break;
}
@@ -560,3 +581,8 @@
}
}
}
+
+void show_trace_task(struct task_struct *tsk)
+{
+ printk("Backtrace not yet implemented for SH.\n");
+}
diff -ur linux/arch/sh/lib/checksum.S linux-sh-cvs/arch/sh/lib/checksum.S
--- linux/arch/sh/lib/checksum.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/lib/checksum.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: checksum.S,v 1.10 2001/07/06 13:11:32 gniibe Exp $
+/* $Id: checksum.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
diff -ur linux/arch/sh/lib/memchr.S linux-sh-cvs/arch/sh/lib/memchr.S
--- linux/arch/sh/lib/memchr.S Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memchr.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memchr.S,v 1.1 2000/04/14 16:49:01 mjd Exp $
+/* $Id: memchr.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* "memchr" implementation of SuperH
*
diff -ur linux/arch/sh/lib/memcpy.S linux-sh-cvs/arch/sh/lib/memcpy.S
--- linux/arch/sh/lib/memcpy.S Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memcpy.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memcpy.S,v 1.3 2001/07/27 11:50:52 gniibe Exp $
+/* $Id: memcpy.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* "memcpy" implementation of SuperH
*
diff -ur linux/arch/sh/lib/memmove.S linux-sh-cvs/arch/sh/lib/memmove.S
--- linux/arch/sh/lib/memmove.S Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memmove.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memmove.S,v 1.2 2001/07/27 11:51:09 gniibe Exp $
+/* $Id: memmove.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* "memmove" implementation of SuperH
*
diff -ur linux/arch/sh/lib/memset.S linux-sh-cvs/arch/sh/lib/memset.S
--- linux/arch/sh/lib/memset.S Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memset.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memset.S,v 1.1 2000/04/14 16:49:01 mjd Exp $
+/* $Id: memset.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* "memset" implementation of SuperH
*
diff -ur linux/arch/sh/lib/strlen.S linux-sh-cvs/arch/sh/lib/strlen.S
--- linux/arch/sh/lib/strlen.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/lib/strlen.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: strlen.S,v 1.2 2001/06/29 14:07:15 gniibe Exp $
+/* $Id: strlen.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* "strlen" implementation of SuperH
*
diff -ur linux/arch/sh/mm/__clear_user_page-sh4.S linux-sh-cvs/arch/sh/mm/__clear_user_page-sh4.S
--- linux/arch/sh/mm/__clear_user_page-sh4.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/__clear_user_page-sh4.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id$
+/* $Id: __clear_user_page-sh4.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* __clear_user_page implementation of SuperH
*
diff -ur linux/arch/sh/mm/__copy_user_page-sh4.S linux-sh-cvs/arch/sh/mm/__copy_user_page-sh4.S
--- linux/arch/sh/mm/__copy_user_page-sh4.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/__copy_user_page-sh4.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: __copy_user_page-sh4.S,v 1.1 2001/07/23 09:02:17 gniibe Exp $
+/* $Id: __copy_user_page-sh4.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* __copy_user_page implementation of SuperH
*
diff -ur linux/arch/sh/mm/cache-sh3.c linux-sh-cvs/arch/sh/mm/cache-sh3.c
--- linux/arch/sh/mm/cache-sh3.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/cache-sh3.c Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: cache-sh3.c,v 1.6 2001/09/10 08:59:59 dwmw2 Exp $
+/* $Id: cache-sh3.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* linux/arch/sh/mm/cache-sh3.c
*
diff -ur linux/arch/sh/mm/cache-sh4.c linux-sh-cvs/arch/sh/mm/cache-sh4.c
--- linux/arch/sh/mm/cache-sh4.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/cache-sh4.c Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: cache-sh4.c,v 1.16 2001/09/10 11:06:35 dwmw2 Exp $
+/* $Id: cache-sh4.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* linux/arch/sh/mm/cache.c
*
diff -ur linux/arch/sh/mm/clear_page.S linux-sh-cvs/arch/sh/mm/clear_page.S
--- linux/arch/sh/mm/clear_page.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/clear_page.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: clear_page.S,v 1.1 2001/07/23 10:08:50 gniibe Exp $
+/* $Id: clear_page.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* clear_page implementation of SuperH
*
diff -ur linux/arch/sh/mm/copy_page.S linux-sh-cvs/arch/sh/mm/copy_page.S
--- linux/arch/sh/mm/copy_page.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/copy_page.S Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: copy_page.S,v 1.2 2001/07/23 10:27:25 gniibe Exp $
+/* $Id: copy_page.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* copy_page implementation of SuperH
*
diff -ur linux/arch/sh/mm/extable.c linux-sh-cvs/arch/sh/mm/extable.c
--- linux/arch/sh/mm/extable.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/extable.c Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: extable.c,v 1.2 2001/03/31 10:43:18 gniibe Exp $
+/* $Id: extable.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
*
* linux/arch/sh/mm/extable.c
* Taken from:
diff -ur linux/arch/sh/mm/fault.c linux-sh-cvs/arch/sh/mm/fault.c
--- linux/arch/sh/mm/fault.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/fault.c Wed Dec 26 14:29:05 2001
@@ -1,4 +1,4 @@
-/* $Id: fault.c,v 1.49 2001/10/06 19:46:00 lethal Exp $
+/* $Id: fault.c,v 1.1.1.1.2.1 2001/12/26 19:29:05 jzs Exp $
*
* linux/arch/sh/mm/fault.c
* Copyright (C) 1999 Niibe Yutaka
@@ -249,6 +249,8 @@
dir = pgd_offset_k(address);
else if (address >= TASK_SIZE)
return 1;
+ else if (!current->mm)
+ return 1;
else
dir = pgd_offset(current->mm, address);
diff -ur linux/arch/sh/mm/init.c linux-sh-cvs/arch/sh/mm/init.c
--- linux/arch/sh/mm/init.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/init.c Mon Oct 15 16:44:54 2001
@@ -1,4 +1,4 @@
-/* $Id: init.c,v 1.19 2001/10/01 02:21:50 gniibe Exp $
+/* $Id: init.c,v 1.1.1.1 2001/10/15 20:44:54 mrbrown Exp $
*
* linux/arch/sh/mm/init.c
*
diff -ur linux/arch/sh/mm/ioremap.c linux-sh-cvs/arch/sh/mm/ioremap.c
--- linux/arch/sh/mm/ioremap.c Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/ioremap.c Mon Oct 15 16:44:54 2001
@@ -1,4 +1,4 @@
-/* $Id: ioremap.c,v 1.4 2001/06/30 09:18:39 gniibe Exp $
+/* $Id: ioremap.c,v 1.1.1.1 2001/10/15 20:44:54 mrbrown Exp $
*
* arch/sh/mm/ioremap.c
*
diff -ur linux/arch/sh/vmlinux.lds.S linux-sh-cvs/arch/sh/vmlinux.lds.S
--- linux/arch/sh/vmlinux.lds.S Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/vmlinux.lds.S Mon Oct 15 16:44:47 2001
@@ -1,4 +1,4 @@
-/* $Id: vmlinux.lds.in,v 1.5 2001/07/27 11:45:55 gniibe Exp $
+/* $Id: vmlinux.lds.S,v 1.1.1.1 2001/10/15 20:44:47 mrbrown Exp $
* ld script to make SuperH Linux kernel
* Written by Niibe Yutaka
*/
diff -ur linux/drivers/Makefile linux-sh-cvs/drivers/Makefile
--- linux/drivers/Makefile Sun Nov 11 13:09:32 2001
+++ linux-sh-cvs/drivers/Makefile Fri Nov 30 18:03:47 2001
@@ -8,7 +8,7 @@
mod-subdirs := dio mtd sbus video macintosh usb input telephony sgi ide \
message/i2o message/fusion scsi md ieee1394 pnp isdn atm \
- fc4 net/hamradio i2c acpi bluetooth
+ fc4 net/hamradio i2c acpi bluetooth maple
subdir-y := parport char block net sound misc media cdrom hotplug
subdir-m := $(subdir-y)
@@ -46,5 +46,6 @@
subdir-$(CONFIG_ACPI) += acpi
subdir-$(CONFIG_BLUEZ) += bluetooth
+subdir-$(CONFIG_MAPLE) += maple
include $(TOPDIR)/Rules.make
diff -ur linux/drivers/cdrom/Config.in linux-sh-cvs/drivers/cdrom/Config.in
--- linux/drivers/cdrom/Config.in Mon Jan 24 14:04:37 2000
+++ linux-sh-cvs/drivers/cdrom/Config.in Mon Oct 15 16:44:57 2001
@@ -25,3 +25,4 @@
tristate ' ISP16/MAD16/Mozart soft configurable cdrom interface support' CONFIG_ISP16_CDI
tristate ' Sony CDU31A/CDU33A CDROM support' CONFIG_CDU31A
tristate ' Sony CDU535 CDROM support' CONFIG_CDU535
+tristate ' SEGA Dreamcast GD-ROM device CD-R support' CONFIG_SEGA_GDROM
diff -ur linux/drivers/cdrom/Makefile linux-sh-cvs/drivers/cdrom/Makefile
--- linux/drivers/cdrom/Makefile Fri Dec 29 17:07:21 2000
+++ linux-sh-cvs/drivers/cdrom/Makefile Mon Oct 15 16:44:57 2001
@@ -42,6 +42,7 @@
obj-$(CONFIG_SBPCD4) += sbpcd4.o cdrom.o
obj-$(CONFIG_SJCD) += sjcd.o
obj-$(CONFIG_CDU535) += sonycd535.o
+obj-$(CONFIG_SEGA_GDROM) += gdrom.o cdrom.o
# Hand off to Rules.make.
diff -ur linux/drivers/char/Makefile linux-sh-cvs/drivers/char/Makefile
--- linux/drivers/char/Makefile Sun Nov 11 13:09:32 2001
+++ linux-sh-cvs/drivers/char/Makefile Fri Nov 30 18:03:52 2001
@@ -95,7 +95,7 @@
endif
ifeq ($(CONFIG_SH_DREAMCAST),y)
KEYMAP = defkeymap.o
- KEYBD =
+ KEYBD = dc_keyb.o
CONSOLE = console.o
endif
endif
@@ -176,6 +176,9 @@
obj-y += joystick/js.o
endif
+obj-$(CONFIG_MAPLE_KEYBOARD) += maple_keyb.o
+obj-$(CONFIG_MAPLE_MOUSE) += maplemouse.o
+
obj-$(CONFIG_BUSMOUSE) += busmouse.o
obj-$(CONFIG_DTLK) += dtlk.o
obj-$(CONFIG_R3964) += n_r3964.o
diff -ur linux/drivers/char/hp600_keyb.c linux-sh-cvs/drivers/char/hp600_keyb.c
--- linux/drivers/char/hp600_keyb.c Thu Sep 13 18:21:32 2001
+++ linux-sh-cvs/drivers/char/hp600_keyb.c Mon Oct 15 16:44:57 2001
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: hp600_keyb.c,v 1.1.1.1 2001/10/15 20:44:57 mrbrown Exp $
* Copyright (C) 2000 YAEGASHI Takeshi
* HP600 keyboard scan routine and translation table
* Copyright (C) 2000 Niibe Yutaka
diff -ur linux/drivers/char/joystick/Config.in linux-sh-cvs/drivers/char/joystick/Config.in
--- linux/drivers/char/joystick/Config.in Wed Sep 12 18:34:06 2001
+++ linux-sh-cvs/drivers/char/joystick/Config.in Mon Oct 15 16:44:59 2001
@@ -46,6 +46,11 @@
if [ "$CONFIG_AMIGA" = "y" ]; then
dep_tristate ' Amiga joysticks' CONFIG_INPUT_AMIJOY $CONFIG_INPUT
fi
+
+ if [ "$CONFIG_MAPLE" != "n" ]; then
+ comment 'Dreamcast Maple Bus controllers'
+ dep_tristate ' Maple Bus controllers' CONFIG_INPUT_MAPLE_CONTROL $CONFIG_INPUT
+ fi
else
comment 'Input core support is needed for joysticks'
fi
diff -ur linux/drivers/char/joystick/Makefile linux-sh-cvs/drivers/char/joystick/Makefile
--- linux/drivers/char/joystick/Makefile Wed Sep 12 18:34:06 2001
+++ linux-sh-cvs/drivers/char/joystick/Makefile Mon Oct 15 16:44:59 2001
@@ -65,6 +65,8 @@
obj-$(CONFIG_INPUT_AMIJOY) += amijoy.o
+obj-$(CONFIG_INPUT_MAPLE_CONTROL)+= maplecontrol.o
+
# The global Rules.make.
include $(TOPDIR)/Rules.make
diff -ur linux/drivers/char/scan_keyb.c linux-sh-cvs/drivers/char/scan_keyb.c
--- linux/drivers/char/scan_keyb.c Thu Apr 12 00:24:52 2001
+++ linux-sh-cvs/drivers/char/scan_keyb.c Mon Oct 15 16:44:58 2001
@@ -1,5 +1,5 @@
/*
- * $Id: scan_keyb.c,v 1.2 2000/07/04 06:24:42 yaegashi Exp $
+ * $Id: scan_keyb.c,v 1.1.1.1 2001/10/15 20:44:58 mrbrown Exp $
* Copyright (C) 2000 YAEGASHI Takeshi
* Generic scan keyboard driver
*/
diff -ur linux/drivers/char/sh-sci.c linux-sh-cvs/drivers/char/sh-sci.c
--- linux/drivers/char/sh-sci.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/drivers/char/sh-sci.c Mon Oct 15 16:44:59 2001
@@ -1,4 +1,4 @@
-/* $Id: sh-sci.c,v 1.40 2000/04/15 06:57:29 gniibe Exp $
+/* $Id: sh-sci.c,v 1.1.1.1 2001/10/15 20:44:59 mrbrown Exp $
*
* linux/drivers/char/sh-sci.c
*
diff -ur linux/drivers/char/sh-sci.h linux-sh-cvs/drivers/char/sh-sci.h
--- linux/drivers/char/sh-sci.h Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/drivers/char/sh-sci.h Mon Oct 15 16:44:59 2001
@@ -1,4 +1,4 @@
-/* $Id: sh-sci.h,v 1.8 2000/03/08 15:19:39 gniibe Exp $
+/* $Id: sh-sci.h,v 1.1.1.1 2001/10/15 20:44:59 mrbrown Exp $
*
* linux/drivers/char/sh-sci.h
*
diff -ur linux/drivers/char/shwdt.c linux-sh-cvs/drivers/char/shwdt.c
--- linux/drivers/char/shwdt.c Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/drivers/char/shwdt.c Thu Nov 29 19:27:08 2001
@@ -10,7 +10,6 @@
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
-
#include
#include
#include
@@ -177,7 +176,7 @@
* sh_wdt_read - Read from Device
*
* @file: file handle of device
- * @char: buffer to write to
+ * @buf: buffer to write to
* @count: length of buffer
* @ppos: offset
*
@@ -193,7 +192,7 @@
* sh_wdt_write - Write to Device
*
* @file: file handle of device
- * @char: buffer to write
+ * @buf: buffer to write
* @count: length of buffer
* @ppos: offset
*
@@ -269,7 +268,7 @@
static int sh_wdt_notify_sys(struct notifier_block *this,
unsigned long code, void *unused)
{
- if (code == SYS_DOWN || SYS_HALT) {
+ if (code == SYS_DOWN || code == SYS_HALT) {
sh_wdt_stop();
}
diff -ur linux/drivers/mtd/maps/Config.in linux-sh-cvs/drivers/mtd/maps/Config.in
--- linux/drivers/mtd/maps/Config.in Thu Oct 4 18:13:18 2001
+++ linux-sh-cvs/drivers/mtd/maps/Config.in Thu Nov 8 15:18:51 2001
@@ -1,6 +1,7 @@
# drivers/mtd/maps/Config.in
-# $Id: Config.in,v 1.16 2001/09/19 18:28:37 dwmw2 Exp $
+# $Id: Config.in,v 1.19 2001/11/07 01:20:58 jsiegel Exp $
+# -- with PCI MTD removed (not yet in linuxsh tree)
mainmenu_option next_comment
@@ -46,8 +47,12 @@
dep_tristate ' Momenco Ocelot boot flash device' CONFIG_MTD_OCELOT $CONFIG_MOMENCO_OCELOT
fi
-if [ "$CONFIG_SH" = "y" ]; then
- dep_tristate ' CFI Flash device mapped on Hitachi SolutionEngine' CONFIG_MTD_SOLUTIONENGINE $CONFIG_MTD_CFI $CONFIG_SH $CONFIG_MTD_REDBOOT_PARTS
+if [ "$CONFIG_SUPERH" = "y" ]; then
+ dep_tristate ' CFI Flash device mapped on Hitachi SolutionEngine' \
+ CONFIG_MTD_SOLUTIONENGINE $CONFIG_MTD_PARTITIONS $CONFIG_MTD_CFI
+ if [ "$CONFIG_MTD_SOLUTIONENGINE" != "n" ]; then
+ hex ' Default reserved Flash size' CONFIG_MTD_SUPERH_RESERVE 0x00010000
+ fi
fi
if [ "$CONFIG_ARM" = "y" ]; then
diff -ur linux/drivers/mtd/maps/solutionengine.c linux-sh-cvs/drivers/mtd/maps/solutionengine.c
--- linux/drivers/mtd/maps/solutionengine.c Thu Oct 4 18:14:59 2001
+++ linux-sh-cvs/drivers/mtd/maps/solutionengine.c Thu Nov 8 15:18:51 2001
@@ -1,5 +1,5 @@
/*
- * $Id: solutionengine.c,v 1.3 2001/10/02 15:05:14 dwmw2 Exp $
+ * $Id: solutionengine.c,v 1.4 2001/11/07 01:20:59 jsiegel Exp $
*
* Flash and EPROM on Hitachi Solution Engine and similar boards.
*
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
extern int parse_redboot_partitions(struct mtd_info *master, struct mtd_partition **pparts);
@@ -57,20 +58,38 @@
write32: soleng_write32,
};
+#ifdef CONFIG_MTD_SUPERH_RESERVE
+static struct mtd_partition superh_se_partitions[] = {
+ /* Reserved for boot code, read-only */
+ {
+ name: "flash_boot",
+ offset: 0x00000000,
+ size: CONFIG_MTD_SUPERH_RESERVE,
+ mask_flags: MTD_WRITEABLE,
+ },
+ /* All else is writable (e.g. JFFS) */
+ {
+ name: "Flash FS",
+ offset: MTDPART_OFS_NXTBLK,
+ size: MTDPART_SIZ_FULL,
+ }
+};
+#endif /* CONFIG_MTD_SUPERH_RESERVE */
+
static int __init init_soleng_maps(void)
{
- int nr_parts;
+ int nr_parts = 0;
/* First probe at offset 0 */
soleng_flash_map.map_priv_1 = P2SEGADDR(0);
- soleng_eprom_map.map_priv_1 = P1SEGADDR(0x400000);
+ soleng_eprom_map.map_priv_1 = P1SEGADDR(0x01000000);
- printk(KERN_NOTICE "Probing for flash chips at 0x000000:\n");
+ printk(KERN_NOTICE "Probing for flash chips at 0x00000000:\n");
flash_mtd = do_map_probe("cfi_probe", &soleng_flash_map);
if (!flash_mtd) {
/* Not there. Try swapping */
- printk(KERN_NOTICE "Probing for flash chips at 0x400000:\n");
- soleng_flash_map.map_priv_1 = P2SEGADDR(0x400000);
+ printk(KERN_NOTICE "Probing for flash chips at 0x01000000:\n");
+ soleng_flash_map.map_priv_1 = P2SEGADDR(0x01000000);
soleng_eprom_map.map_priv_1 = P1SEGADDR(0);
flash_mtd = do_map_probe("cfi_probe", &soleng_flash_map);
if (!flash_mtd) {
@@ -90,9 +109,23 @@
add_mtd_device(eprom_mtd);
}
+#ifdef CONFIG_MTD_REDBOOT_PARTS
nr_parts = parse_redboot_partitions(flash_mtd, &parsed_parts);
+ if (nr_parts > 0)
+ printk(KERN_NOTICE "Found RedBoot partition table.\n");
+ else if (nr_parts < 0)
+ printk(KERN_NOTICE "Error looking for RedBoot partitions.\n");
+#endif /* CONFIG_MTD_REDBOOT_PARTS */
+#if CONFIG_MTD_SUPERH_RESERVE
+ if (nr_parts == 0) {
+ printk(KERN_NOTICE "Using configured partition at 0x%08x.\n",
+ CONFIG_MTD_SUPERH_RESERVE);
+ parsed_parts = superh_se_partitions;
+ nr_parts = sizeof(superh_se_partitions)/sizeof(*parsed_parts);
+ }
+#endif /* CONFIG_MTD_SUPERH_RESERVE */
- if (nr_parts)
+ if (nr_parts > 0)
add_mtd_partitions(flash_mtd, parsed_parts, nr_parts);
else
add_mtd_device(flash_mtd);
diff -ur linux/drivers/mtd/mtdpart.c linux-sh-cvs/drivers/mtd/mtdpart.c
--- linux/drivers/mtd/mtdpart.c Thu Oct 4 18:14:59 2001
+++ linux-sh-cvs/drivers/mtd/mtdpart.c Thu Nov 8 15:18:51 2001
@@ -5,7 +5,7 @@
*
* This code is GPL
*
- * $Id: mtdpart.c,v 1.23 2001/10/02 15:05:11 dwmw2 Exp $
+ * $Id: mtdpart.c,v 1.24 2001/11/07 01:20:58 jsiegel Exp $
*/
#include
@@ -225,6 +225,15 @@
if (slave->offset == MTDPART_OFS_APPEND)
slave->offset = cur_offset;
+ if (slave->offset == MTDPART_OFS_NXTBLK) {
+ u_int32_t emask = master->erasesize-1;
+ slave->offset = (cur_offset + emask) & ~emask;
+ if (slave->offset != cur_offset) {
+ printk(KERN_NOTICE "Moving partition %d: "
+ "0x%08x -> 0x%08x\n", i,
+ cur_offset, slave->offset);
+ }
+ }
if (slave->mtd.size == MTDPART_SIZ_FULL)
slave->mtd.size = master->size - slave->offset;
cur_offset = slave->offset + slave->mtd.size;
diff -ur linux/drivers/net/8139too.c linux-sh-cvs/drivers/net/8139too.c
--- linux/drivers/net/8139too.c Fri Dec 21 12:41:54 2001
+++ linux-sh-cvs/drivers/net/8139too.c Thu Jan 24 05:15:32 2002
@@ -109,9 +109,17 @@
#include
#include
#include
+
#include
#include
+#ifdef CONFIG_8139TOO_DREAMCAST
+#define CONFIG_8139TOO_BUF16K 1
+#define USE_NO_DMAMAP 1
+#else
+#define USE_NO_DMAMAP 0
+#endif
+
#define RTL8139_DRIVER_NAME DRV_NAME " Fast Ethernet driver " DRV_VERSION
#define PFX DRV_NAME ": "
@@ -160,7 +168,11 @@
static int multicast_filter_limit = 32;
/* Size of the in-memory receive ring. */
+#ifdef CONFIG_8139TOO_BUF16K
+#define RX_BUF_LEN_IDX 1 /* 0==8K, 1==16K, 2==32K, 3==64K */
+#else
#define RX_BUF_LEN_IDX 2 /* 0==8K, 1==16K, 2==32K, 3==64K */
+#endif
#define RX_BUF_LEN (8192 << RX_BUF_LEN_IDX)
#define RX_BUF_PAD 16
#define RX_BUF_WRAP_PAD 2048 /* spare padding to handle lack of packet wrap */
@@ -212,6 +224,7 @@
ADDTRON8139,
DFE538TX,
DFE690TXD,
+ SEGABBA,
RTL8129,
} board_t;
@@ -229,6 +242,7 @@
{ "Addtron Technolgy 8139 10/100BaseTX", RTL8139_CAPS },
{ "D-Link DFE-538TX (RealTek RTL8139)", RTL8139_CAPS },
{ "D-Link DFE-690TXD (RealTek RTL8139)", RTL8139_CAPS },
+ { "SEGA Broadband Adapter", RTL8139_CAPS },
{ "RealTek RTL8129", RTL8129_CAPS },
};
@@ -242,6 +256,7 @@
{0x4033, 0x1360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ADDTRON8139 },
{0x1186, 0x1300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DFE538TX },
{0x1186, 0x1340, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DFE690TXD },
+ {0x11db, 0x1234, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SEGABBA },
#ifdef CONFIG_8139TOO_8129
{0x10ec, 0x8129, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8129 },
@@ -654,10 +669,17 @@
PCIErr | PCSTimeout | RxUnderrun | RxOverflow | RxFIFOOver |
TxErr | TxOK | RxErr | RxOK;
+#ifdef CONFIG_8139TOO_BUF16K
+static const unsigned int rtl8139_rx_config =
+ RxCfgRcv16K | RxNoWrap |
+ (RX_FIFO_THRESH << RxCfgFIFOShift) |
+ (RX_DMA_BURST << RxCfgDMAShift);
+#else
static const unsigned int rtl8139_rx_config =
RxCfgRcv32K | RxNoWrap |
(RX_FIFO_THRESH << RxCfgFIFOShift) |
(RX_DMA_BURST << RxCfgDMAShift);
+#endif
static const unsigned int rtl8139_tx_config =
(TX_DMA_BURST << TxDMAShift) | (TX_RETRY << TxRetryShift);
@@ -1335,8 +1357,9 @@
tp->rx_config = rtl8139_rx_config | AcceptBroadcast | AcceptMyPhys;
RTL_W32 (RxConfig, tp->rx_config);
+ tp->rx_config = 0;
- /* Check this value: the documentation for IFG contradicts ifself. */
+ /* Check this value: the documentation for IFG contradicts itself. */
RTL_W32 (TxConfig, rtl8139_tx_config);
tp->cur_rx = 0;
@@ -1653,7 +1676,7 @@
/* Note: the chip doesn't have auto-pad! */
spin_lock_irq(&tp->lock);
RTL_W32_F (TxStatus0 + (entry * sizeof (u32)),
- tp->tx_flag | max(len, (unsigned int)ETH_ZLEN));
+ tp->tx_flag | max(len, (unsigned int) ETH_ZLEN));
dev->trans_start = jiffies;
@@ -1664,8 +1687,8 @@
netif_stop_queue (dev);
spin_unlock_irq(&tp->lock);
- DPRINTK ("%s: Queued Tx packet size %u to slot %d.\n",
- dev->name, len, entry);
+ DPRINTK ("%s: Queued Tx packet at %p size %u to slot %d.\n",
+ dev->name, skb->data, len, entry);
return 0;
}
diff -ur linux/drivers/net/Config.in linux-sh-cvs/drivers/net/Config.in
--- linux/drivers/net/Config.in Fri Dec 21 12:41:54 2001
+++ linux-sh-cvs/drivers/net/Config.in Fri Nov 30 18:03:55 2001
@@ -10,7 +10,9 @@
tristate 'EQL (serial line load balancing) support' CONFIG_EQUALIZER
tristate 'Universal TUN/TAP device driver support' CONFIG_TUN
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
- tristate 'Ethertap network tap (OBSOLETE)' CONFIG_ETHERTAP
+ if [ "$CONFIG_NETLINK" = "y" ]; then
+ tristate 'Ethertap network tap (OBSOLETE)' CONFIG_ETHERTAP
+ fi
fi
if [ "$CONFIG_ISAPNP" = "y" -o "$CONFIG_ISAPNP" = "m" ]; then
@@ -137,6 +139,7 @@
if [ "$CONFIG_OBSOLETE" = "y" ]; then
tristate ' SK_G16 support' CONFIG_SK_G16
fi
+ tristate ' CS89x0 support' CONFIG_CS89x0
fi
if [ "$CONFIG_MCA" = "y" ]; then
tristate ' SKnet MCA support' CONFIG_SKMC
@@ -156,7 +159,6 @@
fi
dep_tristate ' Apricot Xen-II on board Ethernet' CONFIG_APRICOT $CONFIG_ISA
- dep_tristate ' CS89x0 support' CONFIG_CS89x0 $CONFIG_ISA
dep_tristate ' DECchip Tulip (dc21x4x) PCI support' CONFIG_TULIP $CONFIG_PCI
if [ "$CONFIG_TULIP" = "y" -o "$CONFIG_TULIP" = "m" ]; then
dep_bool ' New bus configuration (EXPERIMENTAL)' CONFIG_TULIP_MWI $CONFIG_EXPERIMENTAL
@@ -179,6 +181,7 @@
dep_mbool ' Use PIO instead of MMIO' CONFIG_8139TOO_PIO $CONFIG_8139TOO
dep_mbool ' Support for automatic channel equalization (EXPERIMENTAL)' CONFIG_8139TOO_TUNE_TWISTER $CONFIG_8139TOO $CONFIG_EXPERIMENTAL
dep_mbool ' Support for older RTL-8129/8130 boards' CONFIG_8139TOO_8129 $CONFIG_8139TOO
+ dep_mbool ' Support for Dreamcast Broad Band Adaptor' CONFIG_8139TOO_DREAMCAST $CONFIG_8139TOO
dep_tristate ' SiS 900/7016 PCI Fast Ethernet Adapter support' CONFIG_SIS900 $CONFIG_PCI
dep_tristate ' SMC EtherPower II' CONFIG_EPIC100 $CONFIG_PCI
dep_tristate ' Sundance Alta support' CONFIG_SUNDANCE $CONFIG_PCI
diff -ur linux/drivers/pci/pci.ids linux-sh-cvs/drivers/pci/pci.ids
--- linux/drivers/pci/pci.ids Fri Nov 9 17:03:11 2001
+++ linux-sh-cvs/drivers/pci/pci.ids Fri Nov 30 18:03:55 2001
@@ -7,7 +7,7 @@
# so if you have anything to contribute, please visit the home page or
# send a diff -u against the most recent pci.ids to pci-ids@ucw.cz.
#
-# $Id: pci.ids,v 1.24 2001/10/28 21:55:26 mares Exp $
+# $Id: pci.ids,v 1.1.1.1.2.2 2001/11/30 23:03:55 jzs Exp $
#
# Vendors, devices and subsystems. Please keep sorted.
@@ -963,11 +963,12 @@
1000 QuickStep 1000
3000 QuickStep 3000
1049 Fountain Technologies, Inc.
-104a SGS Thomson Microelectronics
+104a STMicroelectronics
0008 STG 2000X
0009 STG 1764X
1746 STG 1764X
3520 MPEG-II decoder card
+ 2774 STE10/100A
104b BusLogic
0140 BT-946C (old) [multimaster 01]
1040 BT-946C (BA80C30) [MultiMaster 10]
@@ -2640,6 +2641,7 @@
11aa Actel
11ab Galileo Technology Ltd.
0146 GT-64010
+ 4146 GT-64111
4801 GT-48001
f003 GT-64010 Primary Image Piranha Image Generator
11ac Canon Information Systems Research Aust.
@@ -2794,6 +2796,7 @@
11d9 TEC Corporation
11da Novell
11db Sega Enterprises Ltd
+ 1234 Broadband Adapter
11dc Questra Corporation
11dd Crosfield Electronics Limited
11de Zoran Corporation
diff -ur linux/drivers/pcmcia/hd64465_ss.c linux-sh-cvs/drivers/pcmcia/hd64465_ss.c
--- linux/drivers/pcmcia/hd64465_ss.c Tue Jul 10 23:16:30 2001
+++ linux-sh-cvs/drivers/pcmcia/hd64465_ss.c Mon Oct 15 16:45:05 2001
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: hd64465_ss.c,v 1.1.1.1 2001/10/15 20:45:05 mrbrown Exp $
*
* Device driver for the PCMCIA controller module of the
* Hitachi HD64465 handheld companion chip.
diff -ur linux/drivers/video/hitfb.c linux-sh-cvs/drivers/video/hitfb.c
--- linux/drivers/video/hitfb.c Thu Sep 13 19:04:43 2001
+++ linux-sh-cvs/drivers/video/hitfb.c Mon Oct 15 16:45:05 2001
@@ -1,5 +1,5 @@
/*
- * $Id: hitfb.c,v 1.2 2000/07/04 06:24:46 yaegashi Exp $
+ * $Id: hitfb.c,v 1.1.1.1 2001/10/15 20:45:05 mrbrown Exp $
* linux/drivers/video/hitfb.c -- Hitachi LCD frame buffer device
* (C) 1999 Mihai Spatar
* (C) 2000 YAEGASHI Takeshi
diff -ur linux/include/asm-sh/cache.h linux-sh-cvs/include/asm-sh/cache.h
--- linux/include/asm-sh/cache.h Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/cache.h Mon Oct 15 16:45:06 2001
@@ -1,4 +1,4 @@
-/* $Id: cache.h,v 1.3 2000/07/04 06:24:49 gniibe Exp $
+/* $Id: cache.h,v 1.1.1.1 2001/10/15 20:45:06 mrbrown Exp $
*
* include/asm-sh/cache.h
*
diff -ur linux/include/asm-sh/hd64461.h linux-sh-cvs/include/asm-sh/hd64461.h
--- linux/include/asm-sh/hd64461.h Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/hd64461.h Mon Oct 15 16:45:07 2001
@@ -1,7 +1,7 @@
#ifndef __ASM_SH_HD64461
#define __ASM_SH_HD64461
/*
- * $Id: hd64461.h,v 1.7 2001/07/07 11:43:58 yaegashi Exp $
+ * $Id: hd64461.h,v 1.1.1.1 2001/10/15 20:45:07 mrbrown Exp $
* Copyright (C) 2000 YAEGASHI Takeshi
* Hitachi HD64461 companion chip support
*/
diff -ur linux/include/asm-sh/hd64465.h linux-sh-cvs/include/asm-sh/hd64465.h
--- linux/include/asm-sh/hd64465.h Thu Apr 12 00:24:52 2001
+++ linux-sh-cvs/include/asm-sh/hd64465.h Mon Oct 15 16:45:07 2001
@@ -1,7 +1,7 @@
#ifndef _ASM_SH_HD64465_
#define _ASM_SH_HD64465_ 1
/*
- * $Id: hd64465.h,v 1.3 2001/02/07 18:31:20 stuart_menefy Exp $
+ * $Id: hd64465.h,v 1.1.1.1 2001/10/15 20:45:07 mrbrown Exp $
*
* Hitachi HD64465 companion chip support
*
diff -ur linux/include/asm-sh/hd64465_gpio.h linux-sh-cvs/include/asm-sh/hd64465_gpio.h
--- linux/include/asm-sh/hd64465_gpio.h Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/include/asm-sh/hd64465_gpio.h Mon Oct 15 16:45:08 2001
@@ -1,7 +1,7 @@
#ifndef _ASM_SH_HD64465_GPIO_
#define _ASM_SH_HD64465_GPIO_ 1
/*
- * $Id: hd64465_gpio.h,v 1.2 2001/05/24 00:14:13 gniibe Exp $
+ * $Id: hd64465_gpio.h,v 1.1.1.1 2001/10/15 20:45:08 mrbrown Exp $
*
* Hitachi HD64465 companion chip: General Purpose IO pins support.
* This layer enables other device drivers to configure GPIO
diff -ur linux/include/asm-sh/io_dc.h linux-sh-cvs/include/asm-sh/io_dc.h
--- linux/include/asm-sh/io_dc.h Thu Apr 12 00:24:52 2001
+++ linux-sh-cvs/include/asm-sh/io_dc.h Mon Oct 15 16:45:08 2001
@@ -1,5 +1,5 @@
/*
- * $Id: io_dc.h,v 1.1 2001/04/01 15:02:56 yaegashi Exp $
+ * $Id: io_dc.h,v 1.1.1.1 2001/10/15 20:45:08 mrbrown Exp $
* IO functions for SEGA Dreamcast
*/
diff -ur linux/include/asm-sh/ioctl.h linux-sh-cvs/include/asm-sh/ioctl.h
--- linux/include/asm-sh/ioctl.h Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/include/asm-sh/ioctl.h Mon Oct 15 16:45:09 2001
@@ -1,4 +1,4 @@
-/* $Id: ioctl.h,v 1.1 2000/04/14 16:48:21 mjd Exp $
+/* $Id: ioctl.h,v 1.1.1.1 2001/10/15 20:45:09 mrbrown Exp $
*
* linux/ioctl.h for Linux by H.H. Bergman.
*/
diff -ur linux/include/asm-sh/keyboard.h linux-sh-cvs/include/asm-sh/keyboard.h
--- linux/include/asm-sh/keyboard.h Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/keyboard.h Mon Oct 15 16:45:09 2001
@@ -1,7 +1,7 @@
#ifndef __ASM_SH_KEYBOARD_H
#define __ASM_SH_KEYBOARD_H
/*
- * $Id: keyboard.h,v 1.12 2001/09/06 04:01:41 gniibe Exp $
+ * $Id: keyboard.h,v 1.1.1.1 2001/10/15 20:45:09 mrbrown Exp $
*/
#include
diff -ur linux/include/asm-sh/linux_logo.h linux-sh-cvs/include/asm-sh/linux_logo.h
--- linux/include/asm-sh/linux_logo.h Sat Sep 8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/linux_logo.h Mon Oct 15 16:45:08 2001
@@ -1,4 +1,4 @@
-/* $Id: linux_logo.h,v 1.4 2001/08/08 07:39:36 gnb Exp $
+/* $Id: linux_logo.h,v 1.1.1.1 2001/10/15 20:45:08 mrbrown Exp $
* include/linux/linux_logo.h: This is a linux logo
* to be displayed on boot.
*
diff -ur linux/include/asm-sh/namei.h linux-sh-cvs/include/asm-sh/namei.h
--- linux/include/asm-sh/namei.h Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/include/asm-sh/namei.h Mon Oct 15 16:45:10 2001
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.3 2000/07/04 06:24:49 gniibe Exp $
+/* $Id: namei.h,v 1.1.1.1 2001/10/15 20:45:10 mrbrown Exp $
* linux/include/asm-sh/namei.h
*
* Included from linux/fs/namei.c
diff -ur linux/include/asm-sh/pci.h linux-sh-cvs/include/asm-sh/pci.h
--- linux/include/asm-sh/pci.h Fri Oct 12 18:35:54 2001
+++ linux-sh-cvs/include/asm-sh/pci.h Tue Oct 30 18:22:18 2001
@@ -196,6 +196,11 @@
return 1;
}
+/* Not supporting more than 32-bit PCI bus addresses now, but
+ * must satisfy references to this function. Change if needed.
+ */
+#define pci_dac_dma_supported(pci_dev, mask) (0)
+
/* Return the index of the PCI controller for device PDEV. */
#define pci_controller_num(PDEV) (0)
diff -ur linux/include/asm-sh/processor.h linux-sh-cvs/include/asm-sh/processor.h
--- linux/include/asm-sh/processor.h Fri Oct 5 15:11:05 2001
+++ linux-sh-cvs/include/asm-sh/processor.h Thu Jan 24 19:51:42 2002
@@ -184,19 +184,23 @@
#define unlazy_fpu(tsk) do { \
if ((tsk)->flags & PF_USEDFPU) { \
- grab_fpu(); \
save_fpu(tsk); \
} \
} while (0)
#define clear_fpu(tsk) do { \
- if ((tsk)->flags & PF_USEDFPU) \
+ if ((tsk)->flags & PF_USEDFPU) { \
(tsk)->flags &= ~PF_USEDFPU; \
+ release_fpu(); \
+ } \
} while (0)
/* Double presision, NANS as NANS, rounding to nearest, no exceptions */
#define FPSCR_INIT 0x00080000
+#define FPSCR_CAUSE_MASK 0x0001f000 /* Cause bits */
+#define FPSCR_FLAG_MASK 0x0000007c /* Flag bits */
+
/*
* Return saved PC of a blocked thread.
*/
diff -ur linux/include/asm-sh/stat.h linux-sh-cvs/include/asm-sh/stat.h
--- linux/include/asm-sh/stat.h Mon Jul 31 20:38:07 2000
+++ linux-sh-cvs/include/asm-sh/stat.h Fri Nov 2 19:52:47 2001
@@ -42,8 +42,16 @@
* insane amounts of padding around dev_t's.
*/
struct stat64 {
+#if defined(__BIG_ENDIAN__)
+ unsigned char __pad0b[6];
unsigned short st_dev;
- unsigned char __pad0[10];
+#elif defined(__LITTLE_ENDIAN__)
+ unsigned short st_dev;
+ unsigned char __pad0b[6];
+#else
+#error Must know endian to build stat64 structure!
+#endif
+ unsigned char __pad0[4];
unsigned long st_ino;
unsigned int st_mode;
@@ -52,14 +60,25 @@
unsigned long st_uid;
unsigned long st_gid;
+#if defined(__BIG_ENDIAN__)
+ unsigned char __pad3b[6];
+ unsigned short st_rdev;
+#else /* Must be little */
unsigned short st_rdev;
- unsigned char __pad3[10];
+ unsigned char __pad3b[6];
+#endif
+ unsigned char __pad3[4];
long long st_size;
unsigned long st_blksize;
+#if defined(__BIG_ENDIAN__)
+ unsigned long __pad4; /* Future possible st_blocks hi bits */
+ unsigned long st_blocks; /* Number 512-byte blocks allocated. */
+#else /* Must be little */
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
- unsigned long __pad4; /* future possible st_blocks high bits */
+ unsigned long __pad4; /* Future possible st_blocks hi bits */
+#endif
unsigned long st_atime;
unsigned long __pad5;
diff -ur linux/include/asm-sh/uaccess.h linux-sh-cvs/include/asm-sh/uaccess.h
--- linux/include/asm-sh/uaccess.h Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/include/asm-sh/uaccess.h Fri Nov 2 19:52:47 2001
@@ -1,4 +1,4 @@
-/* $Id: uaccess.h,v 1.13 2001/10/01 02:22:01 gniibe Exp $
+/* $Id: uaccess.h,v 1.1.1.1.2.1 2001/11/03 00:52:47 jzs Exp $
*
* User space memory access functions
*
@@ -216,6 +216,7 @@
: "r" (val), "m" (__m(addr)), "i" (-EFAULT) \
: "memory"); })
#else
+#define __put_user_u64(val,addr,retval) \
({ \
__asm__ __volatile__( \
"1:\n\t" \
diff -ur linux/include/linux/input.h linux-sh-cvs/include/linux/input.h
--- linux/include/linux/input.h Wed Sep 12 18:34:06 2001
+++ linux-sh-cvs/include/linux/input.h Mon Oct 15 16:45:12 2001
@@ -2,7 +2,7 @@
#define _INPUT_H
/*
- * $Id: input.h,v 1.34 2001/05/28 09:06:44 vojtech Exp $
+ * $Id: input.h,v 1.2 2001/10/15 04:32:06 mrbrown Exp $
*
* Copyright (c) 1999-2000 Vojtech Pavlik
*
@@ -478,6 +478,7 @@
#define BUS_AMIGA 0x16
#define BUS_ADB 0x17
#define BUS_I2C 0x18
+#define BUS_MAPLE 0x19
/*
* Structures used in ioctls to upload effects to a device
diff -ur linux/include/linux/mtd/partitions.h linux-sh-cvs/include/linux/mtd/partitions.h
--- linux/include/linux/mtd/partitions.h Tue Jun 12 13:30:27 2001
+++ linux-sh-cvs/include/linux/mtd/partitions.h Thu Nov 8 15:18:51 2001
@@ -5,7 +5,7 @@
*
* This code is GPL
*
- * $Id: partitions.h,v 1.6 2001/03/17 17:10:21 dwmw2 Exp $
+ * $Id: partitions.h,v 1.7 2001/11/07 01:20:59 jsiegel Exp $
*/
#ifndef MTD_PARTITIONS_H
@@ -26,14 +26,14 @@
* will extend to the end of the master MTD device.
* offset: absolute starting position within the master MTD device; if
* defined as MTDPART_OFS_APPEND, the partition will start where the
- * previous one ended.
+ * previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block.
* mask_flags: contains flags that have to be masked (removed) from the
* master MTD flag set for the corresponding MTD partition.
* For example, to force a read-only partition, simply adding
* MTD_WRITEABLE to the mask_flags will do the trick.
*
* Note: writeable partitions require their size and offset be
- * erasesize aligned.
+ * erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
*/
struct mtd_partition {
@@ -43,6 +43,7 @@
u_int32_t mask_flags; /* master MTD flags to mask out for this partition */
};
+#define MTDPART_OFS_NXTBLK (-2)
#define MTDPART_OFS_APPEND (-1)
#define MTDPART_SIZ_FULL (0)
diff -ur linux/include/net/inet_ecn.h linux-sh-cvs/include/net/inet_ecn.h
--- linux/include/net/inet_ecn.h Tue Oct 30 18:08:12 2001
+++ linux-sh-cvs/include/net/inet_ecn.h Sat Jan 19 15:20:17 2002
@@ -1,6 +1,10 @@
#ifndef _INET_ECN_H_
#define _INET_ECN_H_
+#include
+
+#ifdef CONFIG_INET_ECN
+
static inline int INET_ECN_is_ce(__u8 dsfield)
{
return (dsfield&3) == 3;
@@ -36,6 +40,18 @@
(label) |= __constant_htons(2 << 4); \
} while (0)
+
+#else
+#define INET_ECN_is_ce(x...) (0)
+#define INET_ECN_is_not_ce(x...) (0)
+#define INET_ECN_is_capable(x...) (0)
+#define INET_ECN_encapsulate(x, y) (x)
+#define IP6_ECN_flow_init(x...) do { } while (0)
+#define IP6_ECN_flow_xmit(x...) do { } while (0)
+#define INET_ECN_xmit(x...) do { } while (0)
+#define INET_ECN_dontxmit(x...) do { } while (0)
+#endif
+
static inline void IP_ECN_set_ce(struct iphdr *iph)
{
u32 check = iph->check;
diff -ur linux/init/main.c linux-sh-cvs/init/main.c
--- linux/init/main.c Fri Dec 21 12:42:04 2001
+++ linux-sh-cvs/init/main.c Sun Dec 2 22:26:35 2001
@@ -195,6 +195,7 @@
{ "scd", 0x0b00 },
{ "mcd", 0x1700 },
{ "cdu535", 0x1800 },
+ { "gdrom", 0xFA00 },
{ "sonycd", 0x1800 },
{ "aztcd", 0x1d00 },
{ "cm206cd", 0x2000 },
diff -ur linux/kernel/ptrace.c linux-sh-cvs/kernel/ptrace.c
--- linux/kernel/ptrace.c Fri Dec 21 12:42:04 2001
+++ linux-sh-cvs/kernel/ptrace.c Thu Jan 24 05:15:32 2002
@@ -163,6 +163,7 @@
maddr = kmap(page);
if (write) {
memcpy(maddr + offset, buf, bytes);
+ flush_dcache_page(page);
flush_page_to_ram(page);
flush_icache_page(vma, page);
} else {
diff -ur linux/mm/memory.c linux-sh-cvs/mm/memory.c
--- linux/mm/memory.c Fri Dec 21 12:42:05 2001
+++ linux-sh-cvs/mm/memory.c Thu Jan 24 05:15:32 2002
@@ -891,7 +891,9 @@
pte_t *page_table)
{
flush_page_to_ram(new_page);
+#if 0 /* This is not needed for VIPT cache, performance goes bad if we flush */
flush_cache_page(vma, address);
+#endif
establish_pte(vma, address, page_table, pte_mkwrite(pte_mkdirty(mk_pte(new_page, vma->vm_page_prot))));
}
@@ -928,7 +930,9 @@
int reuse = can_share_swap_page(old_page);
unlock_page(old_page);
if (reuse) {
+#if 0 /* This is not needed for VIPT cache, performance goes bad if we flush */
flush_cache_page(vma, address);
+#endif
establish_pte(vma, address, page_table, pte_mkyoung(pte_mkdirty(pte_mkwrite(pte))));
spin_unlock(&mm->page_table_lock);
return 1; /* Minor fault */