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 */