diff -urN -X dontdiff linux-2.4.19/arch/arm/lib/Makefile linux-2.4.19.colin/arch/arm/lib/Makefile --- linux-2.4.19/arch/arm/lib/Makefile 2003-01-06 20:04:32.000000000 -0500 +++ linux-2.4.19.colin/arch/arm/lib/Makefile 2002-12-24 18:43:33.000000000 -0500 @@ -15,7 +15,7 @@ strnlen_user.o strchr.o strrchr.o testchangebit.o \ testclearbit.o testsetbit.o uaccess.o getuser.o \ putuser.o ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ - ucmpdi2.o udivdi3.o lib1funcs.o + ucmpdi2.o udivdi3.o lib1funcs.o uaccess-ceiva.o obj-m := obj-n := diff -urN -X dontdiff linux-2.4.19/arch/arm/lib/uaccess-ceiva.S linux-2.4.19.colin/arch/arm/lib/uaccess-ceiva.S --- linux-2.4.19/arch/arm/lib/uaccess-ceiva.S 1969-12-31 19:00:00.000000000 -0500 +++ linux-2.4.19.colin/arch/arm/lib/uaccess-ceiva.S 2002-12-25 18:02:58.000000000 -0500 @@ -0,0 +1,387 @@ +/* + * linux/arch/arm/lib/uaccess.S + * + * Copyright (C) 1995, 1996,1997,1998 Russell King + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Routines to block copy data to/from user memory + * These are highly optimised both for the 4k page size + * and for various alignments. + */ +#include +#include +#include + + .text + +#define PAGE_SHIFT 12 + +/* Prototype: unsigned long __arch_copy_from_user16(void *to,const void *from,unsigned long n); + * Purpose : copy a block from user memory to kernel memory + * Params : to - kernel memory + * : from - user memory + * : n - number of bytes to copy + * Returns : Number of bytes NOT copied. + */ +.cfu16_dest_not_aligned: + rsb ip, ip, #4 + cmp ip, #2 +USER( ldrbt r3, [r1], #1) @ May fault + strb r3, [r0], #1 +USER( ldrgebt r3, [r1], #1) @ May fault + strgeb r3, [r0], #1 +USER( ldrgtbt r3, [r1], #1) @ May fault + strgtb r3, [r0], #1 + sub r2, r2, ip + b .cfu16_dest_aligned + +ENTRY(__arch_copy_from_user16) + stmfd sp!, {r0, r2, r4 - r7, lr} + cmp r2, #4 + blt .cfu16_not_enough + ands ip, r0, #3 + bne .cfu16_dest_not_aligned +.cfu16_dest_aligned: + ands ip, r1, #3 + bne .cfu16_src_not_aligned +/* + * Seeing as there has to be at least 8 bytes to copy, we can + * copy one word, and force a user-mode page fault... + */ + +.cfu16_0fupi: subs r2, r2, #4 + addmi ip, r2, #4 + bmi .cfu16_0nowords +USER( ldrt r3, [r1], #4) + strh r3, [r0], #2 + movs r3, r3, lsr #16 + strh r3, [r0], #2 + mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction + rsb ip, ip, #0 + movs ip, ip, lsr #32 - PAGE_SHIFT + beq .cfu16_0fupi +/* + * ip = max no. of bytes to copy before needing another "strt" insn + */ + cmp r2, ip + movlt ip, r2 + sub r2, r2, ip + subs ip, ip, #32 + blt .cfu16_0rem8lp + +.cfu16_0cpy8lp: ldmia r1!, {r3 - r6} @ Shouldnt fault + strh r3, [r0], #2 + movs r3, r3, lsr #16 + strh r3, [r0], #2 + strh r4, [r0], #2 + movs r4, r4, lsr #16 + strh r4, [r0], #2 + strh r5, [r0], #2 + movs r5, r5, lsr #16 + strh r5, [r0], #2 + strh r6, [r0], #2 + movs r6, r6, lsr #16 + strh r6, [r0], #2 + ldmia r1!, {r3 - r6} @ Shouldnt fault + strh r3, [r0], #2 + movs r3, r3, lsr #16 + strh r3, [r0], #2 + strh r4, [r0], #2 + movs r4, r4, lsr #16 + strh r4, [r0], #2 + strh r5, [r0], #2 + movs r5, r5, lsr #16 + strh r5, [r0], #2 + strh r6, [r0], #2 + movs r6, r6, lsr #16 + strh r6, [r0], #2 + subs ip, ip, #32 + bpl .cfu16_0cpy8lp +.cfu16_0rem8lp: cmn ip, #16 + ldmgeia r1!, {r3 - r6} @ Shouldnt fault + strgeh r3, [r0], #2 + movges r3, r3, lsr #16 + strgeh r3, [r0], #2 + strgeh r4, [r0], #2 + movges r4, r4, lsr #16 + strgeh r4, [r0], #2 + strgeh r5, [r0], #2 + movges r5, r5, lsr #16 + strgeh r5, [r0], #2 + strgeh r6, [r0], #2 + movges r6, r6, lsr #16 + strgeh r6, [r0], #2 + tst ip, #8 + ldmneia r1!, {r3 - r4} @ Shouldnt fault + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + strneh r4, [r0], #2 + movnes r4, r4, lsr #16 + strneh r4, [r0], #2 + tst ip, #4 + ldrnet r3, [r1], #4 @ Shouldnt fault + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + ands ip, ip, #3 + beq .cfu16_0fupi +.cfu16_0nowords: teq ip, #0 + beq .cfu16_finished +.cfu16_nowords: cmp ip, #2 +USER( ldrbt r3, [r1], #1) @ May fault + strb r3, [r0], #1 +USER( ldrgebt r3, [r1], #1) @ May fault + strgeb r3, [r0], #1 +USER( ldrgtbt r3, [r1], #1) @ May fault + strgtb r3, [r0], #1 + b .cfu16_finished + +.cfu16_not_enough: + movs ip, r2 + bne .cfu16_nowords +.cfu16_finished: mov r0, #0 + add sp, sp, #8 + LOADREGS(fd,sp!,{r4 - r7, pc}) + +.cfu16_src_not_aligned: + bic r1, r1, #3 +USER( ldrt r7, [r1], #4) @ May fault + cmp ip, #2 + bgt .cfu16_3fupi + beq .cfu16_2fupi +.cfu16_1fupi: subs r2, r2, #4 + addmi ip, r2, #4 + bmi .cfu16_1nowords + mov r3, r7, lsr #8 +USER( ldrt r7, [r1], #4) @ May fault + orr r3, r3, r7, lsl #24 + str r3, [r0], #4 + mov ip, r1, lsl #32 - PAGE_SHIFT + rsb ip, ip, #0 + movs ip, ip, lsr #32 - PAGE_SHIFT + beq .cfu16_1fupi + cmp r2, ip + movlt ip, r2 + sub r2, r2, ip + subs ip, ip, #16 + blt .cfu16_1rem8lp + +.cfu16_1cpy8lp: mov r3, r7, lsr #8 + ldmia r1!, {r4 - r7} @ Shouldnt fault + orr r3, r3, r4, lsl #24 + mov r4, r4, lsr #8 + orr r4, r4, r5, lsl #24 + mov r5, r5, lsr #8 + orr r5, r5, r6, lsl #24 + mov r6, r6, lsr #8 + orr r6, r6, r7, lsl #24 + strh r3, [r0], #2 + movs r3, r3, lsr #16 + strh r3, [r0], #2 + strh r4, [r0], #2 + movs r4, r4, lsr #16 + strh r4, [r0], #2 + strh r5, [r0], #2 + movs r5, r5, lsr #16 + strh r5, [r0], #2 + strh r6, [r0], #2 + movs r6, r6, lsr #16 + strh r6, [r0], #2 + subs ip, ip, #16 + bpl .cfu16_1cpy8lp +.cfu16_1rem8lp: tst ip, #8 + movne r3, r7, lsr #8 + ldmneia r1!, {r4, r7} @ Shouldnt fault + orrne r3, r3, r4, lsl #24 + movne r4, r4, lsr #8 + orrne r4, r4, r7, lsl #24 + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + strneh r4, [r0], #2 + movnes r4, r4, lsr #16 + strneh r4, [r0], #2 + tst ip, #4 + movne r3, r7, lsr #8 +USER( ldrnet r7, [r1], #4) @ May fault + orrne r3, r3, r7, lsl #24 + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + ands ip, ip, #3 + beq .cfu16_1fupi +.cfu16_1nowords: mov r3, r7, lsr #8 + teq ip, #0 + beq .cfu16_finished + cmp ip, #2 + strb r3, [r0], #1 + movge r3, r3, lsr #8 + strgeb r3, [r0], #1 + movgt r3, r3, lsr #8 + strgtb r3, [r0], #1 + b .cfu16_finished + +.cfu16_2fupi: subs r2, r2, #4 + addmi ip, r2, #4 + bmi .cfu16_2nowords + mov r3, r7, lsr #16 +USER( ldrt r7, [r1], #4) @ May fault + orr r3, r3, r7, lsl #16 + str r3, [r0], #4 + mov ip, r1, lsl #32 - PAGE_SHIFT + rsb ip, ip, #0 + movs ip, ip, lsr #32 - PAGE_SHIFT + beq .cfu16_2fupi + cmp r2, ip + movlt ip, r2 + sub r2, r2, ip + subs ip, ip, #16 + blt .cfu16_2rem8lp + +.cfu16_2cpy8lp: mov r3, r7, lsr #16 + ldmia r1!, {r4 - r7} @ Shouldnt fault + orr r3, r3, r4, lsl #16 + mov r4, r4, lsr #16 + orr r4, r4, r5, lsl #16 + mov r5, r5, lsr #16 + orr r5, r5, r6, lsl #16 + mov r6, r6, lsr #16 + orr r6, r6, r7, lsl #16 + strh r3, [r0], #2 + movs r3, r3, lsr #16 + strh r3, [r0], #2 + strh r4, [r0], #2 + movs r4, r4, lsr #16 + strh r4, [r0], #2 + strh r5, [r0], #2 + movs r5, r5, lsr #16 + strh r5, [r0], #2 + strh r6, [r0], #2 + movs r6, r6, lsr #16 + strh r6, [r0], #2 + subs ip, ip, #16 + bpl .cfu16_2cpy8lp +.cfu16_2rem8lp: tst ip, #8 + movne r3, r7, lsr #16 + ldmneia r1!, {r4, r7} @ Shouldnt fault + orrne r3, r3, r4, lsl #16 + movne r4, r4, lsr #16 + orrne r4, r4, r7, lsl #16 + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + strneh r4, [r0], #2 + movnes r4, r4, lsr #16 + strneh r4, [r0], #2 + tst ip, #4 + movne r3, r7, lsr #16 +USER( ldrnet r7, [r1], #4) @ May fault + orrne r3, r3, r7, lsl #16 + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + ands ip, ip, #3 + beq .cfu16_2fupi +.cfu16_2nowords: mov r3, r7, lsr #16 + teq ip, #0 + beq .cfu16_finished + cmp ip, #2 + strb r3, [r0], #1 + movge r3, r3, lsr #8 + strgeb r3, [r0], #1 +USER( ldrgtbt r3, [r1], #0) @ May fault + strgtb r3, [r0], #1 + b .cfu16_finished + +.cfu16_3fupi: subs r2, r2, #4 + addmi ip, r2, #4 + bmi .cfu16_3nowords + mov r3, r7, lsr #24 +USER( ldrt r7, [r1], #4) @ May fault + orr r3, r3, r7, lsl #8 + str r3, [r0], #4 + mov ip, r1, lsl #32 - PAGE_SHIFT + rsb ip, ip, #0 + movs ip, ip, lsr #32 - PAGE_SHIFT + beq .cfu16_3fupi + cmp r2, ip + movlt ip, r2 + sub r2, r2, ip + subs ip, ip, #16 + blt .cfu16_3rem8lp + +.cfu16_3cpy8lp: mov r3, r7, lsr #24 + ldmia r1!, {r4 - r7} @ Shouldnt fault + orr r3, r3, r4, lsl #8 + mov r4, r4, lsr #24 + orr r4, r4, r5, lsl #8 + mov r5, r5, lsr #24 + orr r5, r5, r6, lsl #8 + mov r6, r6, lsr #24 + orr r6, r6, r7, lsl #8 + strh r3, [r0], #2 + movs r3, r3, lsr #16 + strh r3, [r0], #2 + strh r4, [r0], #2 + movs r4, r4, lsr #16 + strh r4, [r0], #2 + strh r5, [r0], #2 + movs r5, r5, lsr #16 + strh r5, [r0], #2 + strh r6, [r0], #2 + movs r6, r6, lsr #16 + strh r6, [r0], #2 + subs ip, ip, #16 + bpl .cfu16_3cpy8lp +.cfu16_3rem8lp: tst ip, #8 + movne r3, r7, lsr #24 + ldmneia r1!, {r4, r7} @ Shouldnt fault + orrne r3, r3, r4, lsl #8 + movne r4, r4, lsr #24 + orrne r4, r4, r7, lsl #8 + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + strneh r4, [r0], #2 + movnes r4, r4, lsr #16 + strneh r4, [r0], #2 + tst ip, #4 + movne r3, r7, lsr #24 +USER( ldrnet r7, [r1], #4) @ May fault + orrne r3, r3, r7, lsl #8 + strneh r3, [r0], #2 + movnes r3, r3, lsr #16 + strneh r3, [r0], #2 + ands ip, ip, #3 + beq .cfu16_3fupi +.cfu16_3nowords: mov r3, r7, lsr #24 + teq ip, #0 + beq .cfu16_finished + cmp ip, #2 + strb r3, [r0], #1 +USER( ldrget r3, [r1], #0) @ May fault + strgeb r3, [r0], #1 + movgt r3, r3, lsr #8 + strgtb r3, [r0], #1 + b .cfu16_finished + + .section .fixup,"ax" + .align 0 + /* + * We took an exception. r0 contains a pointer to + * the byte not copied. + */ +9001: ldr r2, [sp], #4 @ void *to + sub r2, r0, r2 @ bytes copied + ldr r1, [sp], #4 @ unsigned long count + subs r4, r1, r2 @ bytes left to copy + movne r1, r4 + blne SYMBOL_NAME(__memzero) + mov r0, r4 + LOADREGS(fd,sp!, {r4 - r7, pc}) + .previous + diff -urN -X dontdiff linux-2.4.19/arch/arm/mach-clps711x/edb7211-arch.c linux-2.4.19.colin/arch/arm/mach-clps711x/edb7211-arch.c --- linux-2.4.19/arch/arm/mach-clps711x/edb7211-arch.c 2002-08-02 20:39:42.000000000 -0400 +++ linux-2.4.19.colin/arch/arm/mach-clps711x/edb7211-arch.c 2002-12-11 01:22:39.000000000 -0500 @@ -40,13 +40,19 @@ * Banks sizes _are_ present in the param block, but we're * not using that information yet. */ - mi->bank[0].start = 0xc0000000; - mi->bank[0].size = 8*1024*1024; + + mi->bank[0].start=0xc00000000; + mi->bank[0].size=4*1024*1024; + mi->bank[0].node=0; + mi->nr_banks=2; + +/* mi->bank[0].start = 0xc0000000; + mi->bank[0].size = 2*1024*1024; mi->bank[0].node = 0; mi->bank[1].start = 0xc1000000; - mi->bank[1].size = 8*1024*1024; + mi->bank[1].size = 2*1024*1024; mi->bank[1].node = 1; - mi->nr_banks = 2; + mi->nr_banks = 2;*/ } MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)") diff -urN -X dontdiff linux-2.4.19/arch/arm/mach-clps711x/edb7211-mm.c linux-2.4.19.colin/arch/arm/mach-clps711x/edb7211-mm.c --- linux-2.4.19/arch/arm/mach-clps711x/edb7211-mm.c 2002-08-02 20:39:42.000000000 -0400 +++ linux-2.4.19.colin/arch/arm/mach-clps711x/edb7211-mm.c 2002-12-11 01:22:39.000000000 -0500 @@ -59,6 +59,9 @@ { EP7211_VIRT_EXTKBD, EP7211_PHYS_EXTKBD, MB1, DOMAIN_IO, 1, 1, 0, 0 }, { EP7211_VIRT_CS8900A, EP7211_PHYS_CS8900A, MB1, DOMAIN_IO, 1, 1, 0, 0 }, + /* memory-mapped off-chip LCD controller */ + { CEIVA_VIRT_LCD, CEIVA_PHYS_LCD, MB1 * 4, DOMAIN_IO, 1, 1, 0, 0 }, + /* flash banks */ { EP7211_VIRT_FLASH1, EP7211_PHYS_FLASH1, MB1 * 8, DOMAIN_KERNEL, 1, 1, 0, 0 }, { EP7211_VIRT_FLASH2, EP7211_PHYS_FLASH2, MB1 * 8, DOMAIN_KERNEL, 1, 1, 0, 0 }, diff -urN -X dontdiff linux-2.4.19/drivers/char/edb7211_keyb.c linux-2.4.19.colin/drivers/char/edb7211_keyb.c --- linux-2.4.19/drivers/char/edb7211_keyb.c 2003-01-06 20:04:33.000000000 -0500 +++ linux-2.4.19.colin/drivers/char/edb7211_keyb.c 2002-12-21 22:40:18.000000000 -0500 @@ -308,6 +308,7 @@ void __init edb7211_kbd_init_hw(void) { +#if 0 k_translate = edb7211_translate; k_unexpected_up = edb7211_unexpected_up; k_leds = edb7211_leds; @@ -330,6 +331,7 @@ edb7211_kbd_timer.data = (unsigned long)NULL; edb7211_kbd_timer.expires = jiffies + KEYBOARD_SCAN_INTERVAL; add_timer(&edb7211_kbd_timer); +#endif } diff -urN -X dontdiff linux-2.4.19/drivers/char/Makefile linux-2.4.19.colin/drivers/char/Makefile --- linux-2.4.19/drivers/char/Makefile 2003-01-06 20:04:33.000000000 -0500 +++ linux-2.4.19.colin/drivers/char/Makefile 2002-12-21 22:38:01.000000000 -0500 @@ -88,6 +88,7 @@ endif ifeq ($(CONFIG_ARCH_EDB7211),y) KEYBD += edb7211_keyb.o + KEYMAP := defkeymap.o endif ifeq ($(CONFIG_ARCH_AUTCPU12),y) KEYMAP := defkeymap.o diff -urN -X dontdiff linux-2.4.19/drivers/mtd/chips/jedec_probe.c linux-2.4.19.colin/drivers/mtd/chips/jedec_probe.c --- linux-2.4.19/drivers/mtd/chips/jedec_probe.c 2003-01-06 20:04:34.000000000 -0500 +++ linux-2.4.19.colin/drivers/mtd/chips/jedec_probe.c 2002-12-11 01:22:39.000000000 -0500 @@ -71,6 +71,8 @@ #define I28F008B3B 0x00d3 #define I28F800B3T 0x8892 #define I28F800B3B 0x8893 +#define I28F800B3T2 0x889C +#define I28F800B3B2 0x889D #define I28F016S3 0x00aa #define I28F016B3T 0x00d0 #define I28F016B3B 0x00d1 @@ -477,6 +479,32 @@ } }, { mfr_id: MANUFACTURER_INTEL, + dev_id: I28F800B3B2, + name: "Intel 28F800B3B version 2?", + DevSize: SIZE_1MiB, + CmdSet: P_ID_INTEL_STD, + NumEraseRegions: 4, + regions: { + ERASEINFO(0x04000, 1), + ERASEINFO(0x02000, 2), + ERASEINFO(0x18000, 1), + ERASEINFO(0x20000, 7), + } + }, { + mfr_id: MANUFACTURER_INTEL, + dev_id: I28F800B3T2, + name: "Intel 28F800B3T version 2?", + DevSize: SIZE_1MiB, + CmdSet: P_ID_INTEL_STD, + NumEraseRegions: 4, + regions: { + ERASEINFO(0x20000, 7), + ERASEINFO(0x18000, 1), + ERASEINFO(0x02000, 2), + ERASEINFO(0x04000, 1), + } + }, { + mfr_id: MANUFACTURER_INTEL, dev_id: I28F016B3B, name: "Intel 28F016B3B", DevSize: SIZE_2MiB, diff -urN -X dontdiff linux-2.4.19/drivers/video/Config.in linux-2.4.19.colin/drivers/video/Config.in --- linux-2.4.19/drivers/video/Config.in 2003-01-06 20:04:37.000000000 -0500 +++ linux-2.4.19.colin/drivers/video/Config.in 2002-12-11 01:22:39.000000000 -0500 @@ -121,13 +121,13 @@ tristate ' NEC PowerVR 2 display support' CONFIG_FB_PVR2 dep_bool ' Debug pvr2fb' CONFIG_FB_PVR2_DEBUG $CONFIG_FB_PVR2 fi - if [ "$CONFIG_SUPERH" = "y" ]; then + #if [ "$CONFIG_SUPERH" = "y" ]; then bool ' Epson 1355 framebuffer support' CONFIG_FB_E1355 if [ "$CONFIG_FB_E1355" = "y" ]; then hex ' Register Base Address' CONFIG_E1355_REG_BASE a8000000 hex ' Framebuffer Base Address' CONFIG_E1355_FB_BASE a8200000 fi - fi + #fi if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then if [ "$CONFIG_PCI" != "n" ]; then tristate ' Matrox acceleration (EXPERIMENTAL)' CONFIG_FB_MATROX diff -urN -X dontdiff linux-2.4.19/drivers/video/dummycon.c linux-2.4.19.colin/drivers/video/dummycon.c --- linux-2.4.19/drivers/video/dummycon.c 2000-12-05 15:29:39.000000000 -0500 +++ linux-2.4.19.colin/drivers/video/dummycon.c 2002-12-11 01:22:39.000000000 -0500 @@ -16,7 +16,10 @@ /* * Dummy console driver */ +#define DUMMY_COLUMNS 80 +#define DUMMY_ROWS 25 +#if 0 #if defined(__arm__) #define DUMMY_COLUMNS ORIG_VIDEO_COLS #define DUMMY_ROWS ORIG_VIDEO_LINES @@ -27,6 +30,7 @@ #define DUMMY_COLUMNS 80 #define DUMMY_ROWS 25 #endif +#endif static const char *dummycon_startup(void) { diff -urN -X dontdiff linux-2.4.19/drivers/video/epson1355fb.c linux-2.4.19.colin/drivers/video/epson1355fb.c --- linux-2.4.19/drivers/video/epson1355fb.c 2001-09-13 19:04:43.000000000 -0400 +++ linux-2.4.19.colin/drivers/video/epson1355fb.c 2002-12-22 20:23:41.000000000 -0500 @@ -31,6 +31,7 @@ #include #include #include +#include