summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-05-12 23:48:34 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-05-12 23:48:34 +0000
commit7fd36ebeeec9244a7431bb010e6e3c5e4848a0d5 (patch)
tree5fb03a9aafdd1cec5f4f6ff7f1873174cb89b66c /arch/arm
parentba2dacab305c598cd4c34a604f8e276bf5bab5ff (diff)
Merge with Linux 2.3.99-pre8. Linus must hate me, too man patches ;-)
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Makefile28
-rw-r--r--arch/arm/boot/compressed/Makefile6
-rw-r--r--arch/arm/boot/compressed/head-sa1100.S41
-rw-r--r--arch/arm/boot/compressed/head.S99
-rw-r--r--arch/arm/config.in79
-rw-r--r--arch/arm/def-configs/assabet246
-rw-r--r--arch/arm/def-configs/brutus52
-rw-r--r--arch/arm/def-configs/graphicsclient382
-rw-r--r--arch/arm/def-configs/lart330
-rw-r--r--arch/arm/def-configs/lusl7200233
-rw-r--r--arch/arm/def-configs/thinclient60
-rw-r--r--arch/arm/kernel/Makefile1
-rw-r--r--arch/arm/kernel/arch.h3
-rw-r--r--arch/arm/kernel/bios32.c3
-rw-r--r--arch/arm/kernel/calls.S4
-rw-r--r--arch/arm/kernel/debug-armv.S27
-rw-r--r--arch/arm/kernel/entry-armv.S20
-rw-r--r--arch/arm/kernel/head-armv.S104
-rw-r--r--arch/arm/kernel/sys_arm.c60
-rw-r--r--arch/arm/mm/mm-sa1100.c36
-rw-r--r--arch/arm/mm/proc-arm6,7.S10
-rw-r--r--arch/arm/mm/proc-sa110.S11
22 files changed, 1575 insertions, 260 deletions
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 019f2115e..3988131ac 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -38,7 +38,6 @@ dummy:; @echo '*** 2.3 kernels no longer build correctly with old versions of b
@false
endif
-
# GCC 2.7 uses different options to later compilers; sort out which we have
NEW_GCC := $(shell if $(CC) --version 2>&1 | grep '^2\.7' > /dev/null; then echo n; else echo y; fi)
@@ -52,13 +51,16 @@ CFLAGS_PROC_CPU_32v3 := -march=armv3
CFLAGS_PROC_CPU_32v4 := -march=armv4
CFLAGS_ARM6 := -mtune=arm6
CFLAGS_ARM7 := -mtune=arm7
+CFLAGS_ARM720 := -mtune=arm7tdmi
CFLAGS_SA110 := -mtune=strongarm110
else
+CFLAGS += -DNO_TEXT_SECTIONS
CFLAGS_PROC_CPU_26 := -m3
CFLAGS_PROC_CPU_32v3 :=
CFLAGS_PROC_CPU_32v4 :=
CFLAGS_ARM6 := -m6
CFLAGS_ARM7 := -m6
+CFLAGS_ARM720 := -m6
CFLAGS_SA110 := -m6
endif
@@ -91,8 +93,16 @@ ifeq ($(CONFIG_CPU_32),y)
ifeq ($(CONFIG_CPU_ARM7),y)
CFLAGS += $(CFLAGS_ARM7)
else
+ ifeq ($(CONFIG_CPU_ARM720),y)
+ CFLAGS += $(CFLAGS_ARM720)
+ else
ifeq ($(CONFIG_CPU_SA110),y)
CFLAGS += $(CFLAGS_SA110)
+ else
+ ifeq ($(CONFIG_CPU_SA1100),y)
+ CFLAGS += $(CFLAGS_SA110)
+ endif
+ endif
endif
endif
endif
@@ -151,6 +161,11 @@ MACHINE = sa1100
ARCHDIR = sa1100
endif
+ifeq ($(CONFIG_ARCH_L7200),y)
+MACHINE = l7200
+ARCHDIR = l7200
+endif
+
HEAD := arch/arm/kernel/head-$(PROCESSOR).o \
arch/arm/kernel/init_task.o
SUBDIRS += arch/arm/kernel arch/arm/mm arch/arm/lib \
@@ -261,3 +276,14 @@ thinclient_config:
$(RM) arch/arm/defconfig
cp arch/arm/def-configs/thinclient arch/arm/defconfig
+assabet_config:
+ $(RM) arch/arm/defconfig
+ cp arch/arm/def-configs/assabet arch/arm/defconfig
+
+lart_config:
+ $(RM) arch/arm/defconfig
+ cp arch/arm/def-configs/lart arch/arm/defconfig
+
+l7200_config:
+ $(RM) arch/arm/defconfig
+ cp arch/arm/def-configs/lusl7200 arch/arm/defconfig
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 37d79da39..632126213 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -55,6 +55,12 @@ ifeq ($(CONFIG_SA1100_VICTOR),y)
ZTEXTADDR = 0x00002000
ZBSSADDR = 0xc0100000
endif
+ifeq ($(CONFIG_SA1100_THINCLIENT),y)
+ ZTEXTADDR = 0xC0200000
+endif
+ifeq ($(CONFIG_SA1100_GRAPHICSCLIENT),y)
+ ZTEXTADDR = 0xC0200000
+endif
endif
#
diff --git a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S
index b6e9dbe64..411a210cf 100644
--- a/arch/arm/boot/compressed/head-sa1100.S
+++ b/arch/arm/boot/compressed/head-sa1100.S
@@ -8,27 +8,31 @@
#include <linux/config.h>
+#ifndef CONFIG_ARCH_SA1100
+#error What am I doing here...
+#endif
.section ".start", #alloc, #execinstr
__SA1100_start:
-#ifndef CONFIG_ARCH_SA1100
-#error What am I doing here...
-#endif
+ @ Preserve r0/r1 i.e. kernel entry values
+ mov r8, r0
+ mov r9, r1
-#if defined( CONFIG_SA1100_BRUTUS ) || \
+#if defined( CONFIG_SA1100_ASSABET ) || \
+ defined( CONFIG_SA1100_BRUTUS ) || \
defined( CONFIG_SA1100_THINCLIENT )
@ Booting from Angel -- need to enter SVC mode
#define angel_SWIreason_EnterSVC 0x17 /* from arm.h, in angel source */
-#define angel_SWI_ARM (0xEF123456 & 0xffffff)
+#define angel_SWI_ARM (0x123456)
mov r0, #angel_SWIreason_EnterSVC
swi #angel_SWI_ARM
@ turn off interrupts to prevent the angel from running
mrs r0, cpsr
orr r0, r0, #0xc0
- msr cpsr, r0
+ msr cpsr_c, r0
#endif
#ifdef CONFIG_SA1100_VICTOR
@@ -55,18 +59,23 @@ __SA1100_start:
mcr p15, 0, r0, c7, c10, 4 @ drain WB
mcr p15, 0, r0, c7, c7, 0 @ flush I & D caches
- @ disabling MMU, enabling I cache
+ @ disabling MMU and caches
mrc p15, 0, r0, c1, c0, 0 @ read control reg
bic r0, r0, #0x0d @ clear WB, DC, MMU
- orr r0, r0, #0x1000 @ set Icache
+ bic r0, r0, #0x1000 @ clear Icache
mcr p15, 0, r0, c1, c0, 0
-#ifdef CONFIG_SA1100_BRUTUS
+#if defined( CONFIG_SA1100_ASSABET ) || \
+ defined( CONFIG_SA1100_BRUTUS )
@ Initialize UART1 for early serial communication
@ since UART3 is used by angelboot. It is routed to
@ alternate GPIO functions on Brutus.
b 1f
+#ifdef CONFIG_SA1100_BRUTUS
+#define ALT_UART
+#endif
+
GPIO_BASE: .long 0x90040000
#define GPDR 0x04
#define GAFR 0x1c
@@ -90,7 +99,9 @@ UART1_BASE: .long 0x80010000
#define BAUD_DIV_9600 0x017
#define BAUD_DIV BAUD_DIV_9600
-1: ldr r0, GPIO_BASE
+1:
+#ifdef ALT_UART
+ ldr r0, GPIO_BASE
ldr r1, [r0, #GPDR]
bic r1, r1, #1<<15
orr r1, r1, #1<<14
@@ -102,6 +113,7 @@ UART1_BASE: .long 0x80010000
ldr r1, [r0, #PPAR]
orr r1, r1, #1<<12
str r1, [r0, #PPAR]
+#endif
ldr r0, UART1_BASE
1: ldr r1, [r0, #UTSR1]
tst r1, #1<<0 @ TBY
@@ -120,8 +132,7 @@ UART1_BASE: .long 0x80010000
str r1, [r0, #UTSR0]
#endif
- @ set registers for entry
- mov r0, #0
- mov r1, #16
-
-
+ @ Restore initial r0/r1
+ @ (r8 preserved)
+ mov r0, r8
+ mov r1, r9
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index f60dc3564..2c329295d 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -5,7 +5,6 @@
*/
#include <linux/linkage.h>
- .section ".start", #alloc, #execinstr
/*
* Debugging stuff
@@ -47,6 +46,10 @@
#endif
.endm
+/*
+ * Note that these macros must not contain any code which is not
+ * 100% relocatable. Any attempt to do so will result in a crash.
+ */
#if 0
.macro loadsp, rb
mov \rb, #0x7c000000
@@ -66,6 +69,8 @@
.endm
#endif
+
+ .section ".start", #alloc, #execinstr
/*
* sort out different calling conventions
*/
@@ -79,11 +84,13 @@ start:
b 1f
.word 0x016f2818 @ Magic numbers to help the loader
.word start
-1:
+1: adr r8, start @ get the start address of the code
+ @ (used for locating the page tables)
/*
- * some architecture specific code can
- * be inserted by the linker here
+ * some architecture specific code can be inserted
+ * by the linker here, but it should preserve r0, r1
+ * and r8.
*/
.text
@@ -142,31 +149,6 @@ start:
bl cache_clean_flush
add pc, r5, r0 @ call relocation code
-/*
- * Page table physical address list
- */
- .align 5
- .type pgtable,#object
-pgtable: .word 0x00004000 @ 0x00
- .word 0x10004000 @ 0x01
- .word 0x00000000 @ 0x02
- .word 0x40004000 @ 0x03
- .word 0x00004000 @ 0x04
- .word 0x00004000 @ 0x05
- .word 0x00004000 @ 0x06
- .word 0x80004000 @ 0x07
- .word 0x00004000 @ 0x08
- .word 0x00000000 @ 0x09
- .word 0x00000000 @ 0x0a
- .word 0x00000000 @ 0x0b
- .word 0x00000000 @ 0x0c
- .word 0x00000000 @ 0x0d
- .word 0x10004000 @ 0x0e
- .word 0x08004000 @ 0x0f
- .word 0xc0004000 @ 0x10
- .size pgtable,. - pgtable
-1:
-
.type LC0, #object
LC0: .word __bss_start
.word _end
@@ -175,17 +157,33 @@ LC0: .word __bss_start
.word user_stack+4096
.size LC0, . - LC0
+/*
+ * Turn on the cache. We need to setup some page tables so that we
+ * can have both the I and D caches on.
+ *
+ * We place the page tables 16k down from the kernel execution address,
+ * and we hope that nothing else is using it. If we're using it, we
+ * will go pop!
+ *
+ * On entry,
+ * r4 = kernel execution address
+ * r6 = processor ID
+ * r7 = architecture number
+ * r8 = run-time address of "start"
+ * On exit,
+ * r0, r1, r2, r3, r8, r9 corrupted
+ * This routine must preserve:
+ * r4, r5, r6, r7
+ */
.align 5
cache_on: ldr r1, proc_sa110_type
eor r1, r1, r6
movs r1, r1, lsr #5
movne pc, lr
- cmp r7, #(1b - pgtable) >> 2
- movge pc, lr
- adr r3, pgtable
- ldr r3, [r3, r7, lsl #2]
- teq r3, #0
- moveq pc, lr
+
+ sub r3, r4, #16384 @ Page directory size
+ bic r3, r3, #0xff @ Align the pointer
+ bic r3, r3, #0x3f
/*
* Initialise the page tables
*/
@@ -220,6 +218,9 @@ cache_on: ldr r1, proc_sa110_type
mov pc, lr
/*
+ * This code is relocatable. It is relocated by the above code to the end
+ * of the kernel and executed there. During this time, we have no stacks.
+ *
* r0 = decompressed kernel length
* r1-r3 = unused
* r4 = kernel execution address
@@ -248,13 +249,26 @@ call_kernel: bl cache_clean_flush
mov r1, r7 @ restore architecture number
mov pc, r4 @ call kernel
+/*
+ * Here follow the relocatable cache support functions for
+ * the various processors.
+ */
+
.type proc_sa110_type,#object
proc_sa110_type:
.word 0x4401a100
.size proc_sa110_type, . - proc_sa110_type
/*
- * Turn off StrongARM cache and MMU
+ * Turn off StrongARM cache and MMU. It is safe to
+ * leave the I-cache on.
+ *
+ * On entry,
+ * r6 = processor ID
+ * On exit,
+ * r0, r1 corrupted
+ * This routine must preserve:
+ * r4, r6, r7
*/
.align 5
cache_off: ldr r1, proc_sa110_type
@@ -268,6 +282,13 @@ cache_off: ldr r1, proc_sa110_type
/*
* Clean and flush the cache to maintain consistency.
+ *
+ * On entry,
+ * r6 = processor ID
+ * On exit,
+ * r1, r2, r12 corrupted
+ * This routine must preserve:
+ * r4, r6, r7
*/
.align 5
cache_clean_flush:
@@ -278,7 +299,7 @@ cache_clean_flush:
bic r1, pc, #31
add r2, r1, #32768
-1: ldr r12, [r1], #32
+1: ldr r12, [r1], #32 @ s/w flush D cache
teq r1, r2
bne 1b
@@ -286,6 +307,10 @@ cache_clean_flush:
mcr p15, 0, r1, c7, c10, 4 @ drain WB
mov pc, lr
+/*
+ * Various debugging routines for printing hex characters and
+ * memory, which again must be relocatable.
+ */
#ifdef DEBUG
.type phexbuf,#object
phexbuf: .space 12
diff --git a/arch/arm/config.in b/arch/arm/config.in
index f00835051..911703fe1 100644
--- a/arch/arm/config.in
+++ b/arch/arm/config.in
@@ -14,7 +14,7 @@ bool 'Prompt for development and/or incomplete code/drivers' CONFIG_EXPERIMENTAL
endmenu
mainmenu_option next_comment
-comment 'System and processor type'
+comment 'System and Processor Type'
choice 'ARM system type' \
"Archimedes CONFIG_ARCH_ARC \
@@ -22,6 +22,8 @@ choice 'ARM system type' \
RiscPC CONFIG_ARCH_RPC \
EBSA-110 CONFIG_ARCH_EBSA110 \
FootBridge-based CONFIG_FOOTBRIDGE" RiscPC
+# the following are placeholders for when they are fully integrated
+# LinkUp-L7200 CONFIG_ARCH_L7200
# SA1100-based CONFIG_ARCH_SA1100
if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
@@ -34,6 +36,7 @@ if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
fi
if [ "$CONFIG_HOST_FOOTBRIDGE" = "y" ]; then
+ comment 'Footbridge Implementations'
bool ' Include support for EBSA285' CONFIG_ARCH_EBSA285
bool ' Include support for CATS' CONFIG_ARCH_CATS
bool ' Include support for NetWinder' CONFIG_ARCH_NETWINDER
@@ -47,15 +50,19 @@ if [ "$CONFIG_ADDIN_FOOTBRIDGE" = "y" ]; then
fi
if [ "$CONFIG_ARCH_SA1100" = "y" ]; then
- choice 'SA1100 implementation' \
- "Brutus CONFIG_SA1100_BRUTUS \
- Empeg CONFIG_SA1100_EMPEG \
- Itsy CONFIG_SA1100_ITSY \
- LART CONFIG_SA1100_LART \
- PLEB CONFIG_SA1100_PLEB \
- ThinClient CONFIG_SA1100_THINCLIENT \
- Victor CONFIG_SA1100_VICTOR \
- Tifon CONFIG_SA1100_TIFON" Brutus
+ comment 'SA11x0 Implementations'
+ bool ' Include support for Assabet' CONFIG_SA110_ASSABET
+ bool ' Include support for Bitsy' CONFIG_SA1100_BITSY
+ bool ' Include support for Brutus' CONFIG_SA1100_BRUTUS
+# bool ' Include support for Empeg' CONFIG_SA1100_EMPEG
+# bool ' Include support for Itsy' CONFIG_SA1100_ITSY
+ bool ' Include support for LART' CONFIG_SA1100_LART
+# bool ' Include support for PLEB' CONFIG_SA1100_PLEB
+ bool ' Include support for ThinClient' CONFIG_SA1100_THINCLIENT
+ bool ' Include support for GraphicsClient' CONFIG_SA1100_GRAPHICSCLIENT
+ bool ' Include support for Victor' CONFIG_SA1100_VICTOR
+# bool ' Include support for Tifon' CONFIG_SA1100_TIFON
+ define_bool CONFIG_DISCONTIGMEM y
fi
#
@@ -87,30 +94,32 @@ if [ "$CONFIG_ARCH_ARC" = "y" -o \
else
define_bool CONFIG_CPU_32 y
define_bool CONFIG_CPU_26 n
+fi
- #
- # Select CPU and optimisation dependent on architecture
- #
- if [ "$CONFIG_ARCH_EBSA110" = "y" -o \
- "$CONFIG_ARCH_SA1100" = "y" -o \
- "$CONFIG_FOOTBRIDGE" = "y" -o \
- "$CONFIG_ARCH_TBOX" = "y" -o \
- "$CONFIG_ARCH_SHARK" = "y" -o \
- "$CONFIG_ARCH_NEXUSPCI" = "y" ]; then
- define_bool CONFIG_CPU_32v4 y
- if [ "$CONFIG_ARCH_SA1100" = "y" ]; then
- define_bool CONFIG_CPU_SA1100 y
- else
- define_bool CONFIG_CPU_SA110 y
- fi
- else
- if [ "$CONFIG_ARCH_RPC" = "y" ]; then
- define_bool CONFIG_CPU_32v3 y
- bool 'Support ARM610' CONFIG_CPU_ARM6
- bool 'Support ARM710' CONFIG_CPU_ARM7
- bool 'Support StrongARM110' CONFIG_CPU_SA110
- fi
- fi
+#
+# Select CPU and optimisation dependent on architecture
+#
+if [ "$CONFIG_ARCH_RPC" = "y" ]; then
+ define_bool CONFIG_CPU_32v3 y
+ bool 'Support ARM610' CONFIG_CPU_ARM6
+ bool 'Support ARM710' CONFIG_CPU_ARM7
+ bool 'Support StrongARM110' CONFIG_CPU_SA110
+fi
+if [ "$CONFIG_ARCH_EBSA110" = "y" -o \
+ "$CONFIG_FOOTBRIDGE" = "y" -o \
+ "$CONFIG_ARCH_TBOX" = "y" -o \
+ "$CONFIG_ARCH_SHARK" = "y" -o \
+ "$CONFIG_ARCH_NEXUSPCI" = "y" ]; then
+ define_bool CONFIG_CPU_32v4 y
+ define_bool CONFIG_CPU_SA110 y
+fi
+if [ "$CONFIG_ARCH_L7200" = "y" ]; then
+ define_bool CONFIG_CPU_32v4 y
+ define_bool CONFIG_CPU_ARM720 y
+fi
+if [ "$CONFIG_ARCH_SA1100" = "y" ]; then
+ define_bool CONFIG_CPU_32v4 y
+ define_bool CONFIG_CPU_SA1100 y
fi
#
@@ -137,10 +146,12 @@ else
define_bool CONFIG_ISA_DMA n
fi
+define_bool CONFIG_SBUS n
+define_bool CONFIG_PCMCIA n
+
if [ "$CONFIG_CPU_32" = "y" -a "$CONFIG_ARCH_EBSA110" != "y" ]; then
bool 'Kernel-mode alignment trap handler' CONFIG_ALIGNMENT_TRAP
fi
-#bool 'Split text into discardable sections' CONFIG_TEXT_SECTIONS
endmenu
mainmenu_option next_comment
diff --git a/arch/arm/def-configs/assabet b/arch/arm/def-configs/assabet
new file mode 100644
index 000000000..0a2cb7462
--- /dev/null
+++ b/arch/arm/def-configs/assabet
@@ -0,0 +1,246 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# System and processor type
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_FOOTBRIDGE is not set
+CONFIG_ARCH_SA1100=y
+CONFIG_SA1100_ASSABET=y
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_EMPEG is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_THINCLIENT is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_TIFON is not set
+CONFIG_DISCONTIGMEM=y
+# CONFIG_ARCH_ACORN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_ALIGNMENT_TRAP is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# General setup
+#
+# CONFIG_NET is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_SYSCTL is not set
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+CONFIG_CMDLINE=""
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_FLASH is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+# CONFIG_DRM_TDFX is not set
+# CONFIG_AGP is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_SA1100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_NLS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_LL is not set
diff --git a/arch/arm/def-configs/brutus b/arch/arm/def-configs/brutus
index a72f0f312..80a38a0c3 100644
--- a/arch/arm/def-configs/brutus
+++ b/arch/arm/def-configs/brutus
@@ -18,12 +18,15 @@ CONFIG_EXPERIMENTAL=y
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_FOOTBRIDGE is not set
CONFIG_ARCH_SA1100=y
+# CONFIG_SA1100_ASSABET is not set
CONFIG_SA1100_BRUTUS=y
# CONFIG_SA1100_EMPEG is not set
# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_BITSY is not set
# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_THINCLIENT is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_TIFON is not set
CONFIG_DISCONTIGMEM=y
@@ -32,7 +35,11 @@ CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
CONFIG_CPU_32v4=y
CONFIG_CPU_SA1100=y
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
# CONFIG_ISA_DMA is not set
+# CONFIG_SBUS is not set
+# CONFIG_PCMCIA is not set
# CONFIG_ALIGNMENT_TRAP is not set
#
@@ -62,12 +69,14 @@ CONFIG_BINFMT_ELF=y
#
# CONFIG_PARPORT is not set
CONFIG_CMDLINE=""
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
#
# I2O device support
#
# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
@@ -82,24 +91,23 @@ CONFIG_CMDLINE=""
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_IDE is not set
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_ONLY is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_LVM is not set
# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_STRIPED is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_HD is not set
+# CONFIG_BLK_DEV_FLASH is not set
#
# Character devices
@@ -155,11 +163,6 @@ CONFIG_UNIX98_PTY_COUNT=32
# CONFIG_AGP is not set
#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
# Console drivers
#
# CONFIG_VGA_CONSOLE is not set
@@ -171,10 +174,6 @@ CONFIG_FB=y
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FB_SA1100=y
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB2=y
@@ -189,6 +188,13 @@ CONFIG_FONT_8x8=y
# CONFIG_FONT_ACORN_8x8 is not set
#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
# SCSI support
#
# CONFIG_SCSI is not set
@@ -200,6 +206,7 @@ CONFIG_FONT_8x8=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
@@ -234,6 +241,11 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_NLS is not set
#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
diff --git a/arch/arm/def-configs/graphicsclient b/arch/arm/def-configs/graphicsclient
new file mode 100644
index 000000000..902495c32
--- /dev/null
+++ b/arch/arm/def-configs/graphicsclient
@@ -0,0 +1,382 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# System and processor type
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_FOOTBRIDGE is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_EMPEG is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+CONFIG_SA1100_GRAPHICSCLIENT=y
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_TIFON is not set
+CONFIG_DISCONTIGMEM=y
+# CONFIG_ARCH_ACORN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
+# CONFIG_ISA_DMA is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# General setup
+#
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+# CONFIG_PARPORT is not set
+CONFIG_CMDLINE="ip=off"
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_IDE is not set
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_ONLY is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+# CONFIG_DRM_TDFX is not set
+
+#
+# PCMCIA character device support
+#
+# CONFIG_AGP is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_SA1100=y
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_ALIAS is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+# (it is safe to leave these untouched)
+#
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+CONFIG_NET_VENDOR_SMC=y
+# CONFIG_WD80x3 is not set
+# CONFIG_ULTRA is not set
+# CONFIG_ULTRA32 is not set
+CONFIG_SMC9194=y
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_EISA is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_YELLOWFIN is not set
+# CONFIG_ACENIC is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring driver support
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_LL is not set
diff --git a/arch/arm/def-configs/lart b/arch/arm/def-configs/lart
new file mode 100644
index 000000000..d101f4392
--- /dev/null
+++ b/arch/arm/def-configs/lart
@@ -0,0 +1,330 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# System and processor type
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_FOOTBRIDGE is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_EMPEG is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_BITSY is not set
+CONFIG_SA1100_LART=y
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_THINCLIENT is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_TIFON is not set
+CONFIG_DISCONTIGMEM=y
+# CONFIG_ARCH_ACORN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+# CONFIG_KMOD is not set
+
+#
+# General setup
+#
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_SYSCTL is not set
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+CONFIG_CMDLINE="console=ttyS0,9600"
+CONFIG_LEDS=y
+# CONFIG_LEDS_TIMER is not set
+CONFIG_LEDS_CPU=y
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_FLASH is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+# CONFIG_AGP is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_ALIAS is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+# (it is safe to leave these untouched)
+#
+# CONFIG_SKB_LARGE is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_YELLOWFIN is not set
+# CONFIG_ACENIC is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=y
+CONFIG_PPP_ASYNC=y
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=m
+CONFIG_SLIP=y
+CONFIG_SLIP_COMPRESSED=y
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_NLS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_DEBUG_LL=y
diff --git a/arch/arm/def-configs/lusl7200 b/arch/arm/def-configs/lusl7200
new file mode 100644
index 000000000..96cc49d3d
--- /dev/null
+++ b/arch/arm/def-configs/lusl7200
@@ -0,0 +1,233 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# System and Processor Type
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_FOOTBRIDGE is not set
+CONFIG_ARCH_L7200=y
+# CONFIG_ARCH_ACORN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ARM720=y
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_SBUS is not set
+# CONFIG_PCMCIA is not set
+# CONFIG_ALIGNMENT_TRAP is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# General setup
+#
+# CONFIG_NET is not set
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_LVM is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_STRIPED is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+CONFIG_SERIAL_L7200=y
+CONFIG_SERIAL_L7200_CONSOLE=y
+# CONFIG_DIGIEPCA is not set
+# CONFIG_DIGI is not set
+# CONFIG_ESPSERIAL is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINK is not set
+# CONFIG_N_HDLC is not set
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_STALDRV is not set
+# CONFIG_UNIX98_PTYS is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+# CONFIG_DRM_TDFX is not set
+# CONFIG_AGP is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_RAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_DEBUG is not set
+# CONFIG_DEVPTS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_SYSV_FS_WRITE is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_NCPFS_NLS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_NLS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_DEBUG_LL=y
diff --git a/arch/arm/def-configs/thinclient b/arch/arm/def-configs/thinclient
index b512fad1d..32355662b 100644
--- a/arch/arm/def-configs/thinclient
+++ b/arch/arm/def-configs/thinclient
@@ -18,12 +18,15 @@ CONFIG_EXPERIMENTAL=y
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_FOOTBRIDGE is not set
CONFIG_ARCH_SA1100=y
+# CONFIG_SA1100_ASSABET is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_EMPEG is not set
# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_BITSY is not set
# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_PLEB is not set
CONFIG_SA1100_THINCLIENT=y
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_TIFON is not set
CONFIG_DISCONTIGMEM=y
@@ -32,7 +35,11 @@ CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
CONFIG_CPU_32v4=y
CONFIG_CPU_SA1100=y
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
# CONFIG_ISA_DMA is not set
+# CONFIG_SBUS is not set
+# CONFIG_PCMCIA is not set
CONFIG_ALIGNMENT_TRAP=y
#
@@ -56,14 +63,18 @@ CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ARTHUR is not set
+
+#
+# Parallel port support
+#
# CONFIG_PARPORT is not set
CONFIG_CMDLINE="root=nfs"
+# CONFIG_LEDS is not set
#
# I2O device support
#
# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_LAN is not set
# CONFIG_I2O_SCSI is not set
@@ -79,25 +90,23 @@ CONFIG_CMDLINE="root=nfs"
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_IDE is not set
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_ONLY is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_LVM is not set
# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_STRIPED is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_FLASH=y
#
# Character devices
@@ -135,7 +144,6 @@ CONFIG_UNIX98_PTY_COUNT=32
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
-# CONFIG_EFI_RTC is not set
#
# Video For Linux
@@ -154,15 +162,6 @@ CONFIG_UNIX98_PTY_COUNT=32
# CONFIG_AGP is not set
#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Misc devices
-#
-
-#
# Console drivers
#
# CONFIG_VGA_CONSOLE is not set
@@ -174,10 +173,6 @@ CONFIG_FB=y
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FB_SA1100=y
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB2=y
@@ -300,7 +295,7 @@ CONFIG_SMC9194=y
# CONFIG_NET_RADIO is not set
#
-# Token Ring driver support
+# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
@@ -313,6 +308,13 @@ CONFIG_SMC9194=y
# CONFIG_WAN is not set
#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
# SCSI support
#
# CONFIG_SCSI is not set
@@ -324,6 +326,7 @@ CONFIG_SMC9194=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
@@ -370,6 +373,11 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_NLS is not set
#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index 6cc5652e0..d8f14a756 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -19,6 +19,7 @@ O_OBJS_ebsa110 = dma-dummy.o
O_OBJS_footbridge = dma.o dma-footbridge.o $(ISA_DMA_OBJS) hw-footbridge.o isa.o
O_OBJS_nexuspci = dma-dummy.o
O_OBJS_sa1100 = dma-dummy.o fiq.o
+O_OBJS_l7200 = dma-dummy.o fiq.o
O_TARGET := kernel.o
diff --git a/arch/arm/kernel/arch.h b/arch/arm/kernel/arch.h
index 91de77772..87494efed 100644
--- a/arch/arm/kernel/arch.h
+++ b/arch/arm/kernel/arch.h
@@ -33,7 +33,8 @@ struct machine_desc {
};
/*
- * Set of macros to define architecture features
+ * Set of macros to define architecture features. This is built into
+ * a table by the linker.
*/
#define MACHINE_START(_type,_name) \
const struct machine_desc __mach_desc_##_type \
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 835bce140..0d2e68846 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -378,6 +378,9 @@ static int __init netwinder_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
case DEV(PCI_VENDOR_ID_INTERG, PCI_DEVICE_ID_INTERG_5000):
return IRQ_NETWINDER_VGA;
+ case DEV(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285):
+ return 0;
+
default:
printk(KERN_ERR "PCI: %02X:%02X [%04X:%04X] unknown device\n",
dev->bus->number, dev->devfn,
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
index d8d416c4e..eec058522 100644
--- a/arch/arm/kernel/calls.S
+++ b/arch/arm/kernel/calls.S
@@ -68,7 +68,7 @@
.long SYMBOL_NAME(sys_ni_syscall) /* was sys_mpx */
.long SYMBOL_NAME(sys_setpgid)
.long SYMBOL_NAME(sys_ni_syscall) /* was sys_ulimit */
- .long SYMBOL_NAME(sys_olduname)
+ .long SYMBOL_NAME(sys_ni_syscall) /* was sys_olduname */
/* 60 */ .long SYMBOL_NAME(sys_umask)
.long SYMBOL_NAME(sys_chroot)
.long SYMBOL_NAME(sys_ustat)
@@ -118,7 +118,7 @@
.long SYMBOL_NAME(sys_newstat)
.long SYMBOL_NAME(sys_newlstat)
.long SYMBOL_NAME(sys_newfstat)
- .long SYMBOL_NAME(sys_uname)
+ .long SYMBOL_NAME(sys_ni_syscall) /* was sys_uname */
/* 110 */ .long SYMBOL_NAME(sys_iopl)
.long SYMBOL_NAME(sys_vhangup)
.long SYMBOL_NAME(sys_ni_syscall)
diff --git a/arch/arm/kernel/debug-armv.S b/arch/arm/kernel/debug-armv.S
index ce7f2f94c..8054f8756 100644
--- a/arch/arm/kernel/debug-armv.S
+++ b/arch/arm/kernel/debug-armv.S
@@ -160,6 +160,33 @@
bne 1001b
.endm
+#elif defined(CONFIG_ARCH_L7200)
+
+ .macro addruart,rx
+
+ mrc p15, 0, \rx, c1, c0
+ tst \rx, #1 @ MMU enabled?
+ moveq \rx, #0x80000000 @ physical base address
+ movne \rx, #0xd0000000 @ virtual address
+ add \rx, \rx, #0x00044000 @ Ser1
+@ add \rx, \rx, #0x00045000 @ Ser2
+ .endm
+
+ .macro senduart,rd,rx
+ str \rd, [\rx, #0x0] @ UARTDR1
+ .endm
+
+ .macro waituart,rd,rx
+1001: ldr \rd, [\rx, #0x18] @ UARTFLG
+ tst \rd, #1 << 5 @ UARTFLGUTXFF - 1 when full
+ bne 1001b
+ .endm
+
+ .macro busyuart,rd,rx
+1001: ldr \rd, [\rx, #0x18] @ UARTFLG
+ tst \rd, #1 << 3 @ UARTFLGUBUSY - 1 when busy
+ bne 1001b
+ .endm
#else
#error Unknown architecture
#endif
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 182b1c3b4..bffe289ce 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -400,6 +400,26 @@ ENTRY(soft_irq_mask)
.macro irq_prio_table
.endm
+#elif defined(CONFIG_ARCH_L7200)
+/* Don't use fast interrupts */
+ .macro disable_fiq
+ .endm
+
+ .macro get_irqnr_and_base, irqnr, irqstat, base
+ ldr r4, =0xe0001000 @ Virt addr status reg
+ ldr \irqstat, [r4] @ get interrupts
+ mov \irqnr, #0
+1001: tst \irqstat, #1
+ addeq \irqnr, \irqnr, #1
+ moveq \irqstat, \irqstat, lsr #1
+ tsteq \irqnr, #32
+ beq 1001b
+ teq \irqnr, #32
+ .endm
+
+ .macro irq_prio_table
+ .endm
+
#else
#error Unknown architecture
#endif
diff --git a/arch/arm/kernel/head-armv.S b/arch/arm/kernel/head-armv.S
index 956d9ccd2..38bfc8760 100644
--- a/arch/arm/kernel/head-armv.S
+++ b/arch/arm/kernel/head-armv.S
@@ -63,31 +63,39 @@ ENTRY(_stext)
mov r5, #0
movne pc, r0
+ mov r0, #0 @ catch old NeTTroms
+ mov r1, #5 @ (will go in 2.5)
+#endif
+#ifdef CONFIG_ARCH_L7200
+/*
+ * FIXME - No bootloader, so manually set 'r1' with our architecture number.
+ */
mov r0, #0
- mov r1, #5
+ mov r1, #19
#endif
/*
* Entry point. Entry *must* be called with r0 == 0, with the MMU off.
* r1 contains the unique architecture number. See
- * linux/arch/arm/kernel/setup.c machine_desc[] array for the complete
- * list. If you require a new number, please follow the instructions
- * given in Documentation/arm/README.
+ * linux/arch/arm/kernel/arch.c and linux/include/asm-arm/system.h for
+ * the complete list. If you require a new number, please follow the
+ * instructions given towards the end of Documentation/arm/README.
*/
-__entry: teq r0, #0
- movne r0, #'i'
+__entry: teq r0, #0 @ wrong register vals?
+ movne r0, #'i' @ yes, error 'i'
bne __error
bl __lookup_processor_type
teq r10, #0 @ invalid processor?
- moveq r0, #'p'
+ moveq r0, #'p' @ yes, error 'p'
beq __error
bl __lookup_architecture_type
teq r7, #0 @ invalid architecture?
- moveq r0, #'a'
+ moveq r0, #'a' @ yes, error 'a'
beq __error
bl __create_page_tables
- adr lr, __ret
- add pc, r10, #12 @ flush caches (returns ctrl reg)
+ adr lr, __ret @ return address
+ add pc, r10, #12 @ initialise processor
+ @ (return control reg)
__switch_data: .long __mmap_switched
.long SYMBOL_NAME(__bss_start)
@@ -115,7 +123,8 @@ __ret: ldr lr, __switch_data
.align 5
__mmap_switched:
adr r3, __switch_data + 4
- ldmia r3, {r4, r5, r6, r7, r8, sp} @ Setup stack
+ ldmia r3, {r4, r5, r6, r7, r8, sp} @ r4 = __bss_start
+ @ sp = stack pointer
mov fp, #0 @ Clear BSS
1: cmp r4, r5
@@ -150,8 +159,8 @@ __create_page_tables:
add r4, r5, #SWAPPER_PGDIR_OFFSET
mov r0, r4
mov r3, #0
- add r2, r0, #0x4000 @ Clear page table
-1: str r3, [r0], #4
+ add r2, r0, #0x4000 @ 16k of page table
+1: str r3, [r0], #4 @ Clear page table
str r3, [r0], #4
str r3, [r0], #4
str r3, [r0], #4
@@ -164,19 +173,19 @@ __create_page_tables:
*
* The identity mapping will be removed by paging_init()
*/
- mov r3, #0x0c
- orr r3, r3, r8
- add r3, r3, r5
+ mov r3, #0x0c @ cacheable, bufferable
+ orr r3, r3, r8 @ | pagetable flags
+ add r3, r3, r5 @ + start of RAM
add r0, r4, r5, lsr #18
- str r3, [r0]
- add r0, r4, #(TEXTADDR - 0x8000) >> 18
- str r3, [r0], #4
+ str r3, [r0] @ identity mapping
+ add r0, r4, #(TEXTADDR - 0x8000) >> 18 @ start of kernel
+ str r3, [r0], #4 @ PAGE_OFFSET + 0MB
add r3, r3, #1 << 20
- str r3, [r0], #4
+ str r3, [r0], #4 @ PAGE_OFFSET + 1MB
add r3, r3, #1 << 20
- str r3, [r0], #4
+ str r3, [r0], #4 @ PAGE_OFFSET + 2MB
add r3, r3, #1 << 20
- str r3, [r0], #4
+ str r3, [r0], #4 @ PAGE_OFFSET + 3MB
#ifdef CONFIG_DEBUG_LL
/*
* Map in IO space for serial debugging.
@@ -194,6 +203,10 @@ __create_page_tables:
teq r0, r2
bne 1b
#ifdef CONFIG_ARCH_NETWINDER
+ /*
+ * If we're using the NetWinder, we need to map in
+ * the 16550-type serial port for the debug messages
+ */
teq r1, #5
bne 1f
add r0, r4, #0x3fc0
@@ -228,7 +241,10 @@ __create_page_tables:
* proceed. We ought to tell the user, but since we
* don't have any guarantee that we're even running on
* the right architecture, we do virtually nothing.
- * r0 = ascii error character
+ * r0 = ascii error character:
+ * a = invalid architecture
+ * p = invalid processor
+ * i = invalid calling convention
*
* Generally, only serious errors cause this.
*/
@@ -262,8 +278,11 @@ err_str: .asciz "\nError: "
#endif
/*
- * Read processor ID register (CP#15, CR0), and determine
- * processor type.
+ * Read processor ID register (CP#15, CR0), and look up in the linker-built
+ * supported processor list. Note that we can't use the absolute addresses
+ * for the __proc_info lists since we aren't running with the MMU on
+ * (and therefore, we are not in the correct address space). We have to
+ * calculate the offset.
*
* Returns:
* r5, r6, r7 corrupted
@@ -274,20 +293,24 @@ err_str: .asciz "\nError: "
__lookup_processor_type:
adr r5, 2f
ldmia r5, {r7, r9, r10}
- sub r5, r5, r10
- add r7, r7, r5
+ sub r5, r5, r10 @ convert addresses
+ add r7, r7, r5 @ to our address space
add r10, r9, r5
mrc p15, 0, r9, c0, c0 @ get processor id
1: ldmia r10, {r5, r6, r8} @ value, mask, mmuflags
- eor r5, r5, r9
- tst r5, r6
+ and r6, r6, r9 @ mask wanted bits
+ teq r5, r6
moveq pc, lr
add r10, r10, #36 @ sizeof(proc_info_list)
cmp r10, r7
blt 1b
- mov r10, #0
+ mov r10, #0 @ unknown processor
mov pc, lr
+/*
+ * Look in include/asm-arm/procinfo.h and arch/arm/kernel/arch.[ch] for
+ * more information about the __proc_info and __arch_info structures.
+ */
2: .long __proc_info_end
.long __proc_info_begin
.long 2b
@@ -295,10 +318,14 @@ __lookup_processor_type:
.long __arch_info_end
/*
- * Lookup machine architecture
- * r1 = machine architecture number
+ * Lookup machine architecture in the linker-build list of architectures.
+ * Note that we can't use the absolute addresses for the __arch_info
+ * lists since we aren't running with the MMU on (and therefore, we are
+ * not in the correct address space). We have to calculate the offset.
+ *
+ * r1 = machine architecture number
* Returns:
- * r4 = unused word
+ * r2, r3, r4 corrupted
* r5 = physical start address of RAM
* r6 = physical address of IO
* r7 = byte offset into page tables for IO
@@ -306,16 +333,17 @@ __lookup_processor_type:
__lookup_architecture_type:
adr r4, 2b
ldmia r4, {r2, r3, r5, r6, r7} @ throw away r2, r3
- sub r5, r4, r5
- add r4, r6, r5
+ sub r5, r4, r5 @ convert addresses
+ add r4, r6, r5 @ to our address space
add r7, r7, r5
-1: ldr r5, [r4]
+1: ldr r5, [r4] @ get machine type
teq r5, r1
beq 2f
add r4, r4, #SIZEOF_MACHINE_DESC
cmp r4, r7
blt 1b
- mov r7, #0
+ mov r7, #0 @ unknown architecture
mov pc, lr
-2: ldmib r4, {r5, r6, r7}
+2: ldmib r4, {r5, r6, r7} @ found, get results
+ mov r7, r7, lsr #18 @ pagetable byte offset
mov pc, lr
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index 9abb9e617..93c539ffd 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -248,66 +248,6 @@ out:
return error;
}
-/* Compatability functions - we used to pass 5 parameters as r0, r1, r2, *r3, *(r3+4)
- * We now use r0 - r4, and return an error if the old style calling standard is used.
- * Eventually these functions will disappear.
- */
-asmlinkage int sys_uname(struct old_utsname * name)
-{
- static int warned = 0;
- int err;
-
- if (warned == 0) {
- warned ++;
- printk (KERN_NOTICE "%s (%d): obsolete uname call\n",
- current->comm, current->pid);
- }
-
- if(!name)
- return -EFAULT;
- down_read(&uts_sem);
- err=copy_to_user (name, &system_utsname, sizeof (*name));
- up_read(&uts_sem);
- return err?-EFAULT:0;
-}
-
-asmlinkage int sys_olduname(struct oldold_utsname * name)
-{
- int error;
- static int warned = 0;
-
- if (warned == 0) {
- warned ++;
- printk (KERN_NOTICE "%s (%d): obsolete olduname call\n",
- current->comm, current->pid);
- }
-
- if (!name)
- return -EFAULT;
-
- if (!access_ok(VERIFY_WRITE,name,sizeof(struct oldold_utsname)))
- return -EFAULT;
-
- down_read(&uts_sem);
-
- error = __copy_to_user(&name->sysname,&system_utsname.sysname,__OLD_UTS_LEN);
- error |= __put_user(0,name->sysname+__OLD_UTS_LEN);
- error |= __copy_to_user(&name->nodename,&system_utsname.nodename,__OLD_UTS_LEN);
- error |= __put_user(0,name->nodename+__OLD_UTS_LEN);
- error |= __copy_to_user(&name->release,&system_utsname.release,__OLD_UTS_LEN);
- error |= __put_user(0,name->release+__OLD_UTS_LEN);
- error |= __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN);
- error |= __put_user(0,name->version+__OLD_UTS_LEN);
- error |= __copy_to_user(&name->machine,&system_utsname.machine,__OLD_UTS_LEN);
- error |= __put_user(0,name->machine+__OLD_UTS_LEN);
-
- up_read(&uts_sem);
-
- error = error ? -EFAULT : 0;
-
- return error;
-}
-
asmlinkage int sys_pause(void)
{
current->state = TASK_INTERRUPTIBLE;
diff --git a/arch/arm/mm/mm-sa1100.c b/arch/arm/mm/mm-sa1100.c
index 5674dbe37..9d9306dd4 100644
--- a/arch/arm/mm/mm-sa1100.c
+++ b/arch/arm/mm/mm-sa1100.c
@@ -29,12 +29,12 @@
#define SA1100_STD_IO_MAPPING \
/* virtual physical length domain r w c b */ \
- { 0xe0000000, 0x20000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA0 IO */ \
- { 0xe4000000, 0x30000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA1 IO */ \
- { 0xe8000000, 0x28000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA0 attr */ \
- { 0xec000000, 0x38000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA1 attr */ \
- { 0xf0000000, 0x2c000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA0 mem */ \
- { 0xf4000000, 0x3c000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA1 mem */ \
+ { 0xe0000000, 0x20000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 IO */ \
+ { 0xe4000000, 0x30000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 IO */ \
+ { 0xe8000000, 0x28000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 attr */ \
+ { 0xec000000, 0x38000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 attr */ \
+ { 0xf0000000, 0x2c000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 mem */ \
+ { 0xf4000000, 0x3c000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 mem */ \
{ 0xf8000000, 0x80000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCM */ \
{ 0xfa000000, 0x90000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* SCM */ \
{ 0xfc000000, 0xa0000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* MER */ \
@@ -63,16 +63,21 @@ static struct map_desc empeg_io_desc[] __initdata = {
#endif
};
+static struct map_desc graphicsclient_io_desc[] __initdata = {
+#ifdef CONFIG_SA1100_GRAPHICSCLIENT
+ { 0xd0000000, 0x08000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 */
+ { 0xd0800000, 0x18000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 3 */
+ { 0xdc000000, 0x10000000, 0x00400000, DOMAIN_IO, 0, 1, 0, 0 }, /* CPLD */
+ SA1100_STD_IO_MAPPING
+#endif
+};
+
static struct map_desc thinclient_io_desc[] __initdata = {
#ifdef CONFIG_SA1100_THINCLIENT
-#if 1
- /* ThinClient: only one of those... */
-// { 0xd0000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 when JP1 2-4 */
- { 0xd0000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 when JP1 3-4 */
+#if 0
+ { 0xd0000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 when JP1 2-4 */
#else
- /* GraphicsClient: */
- { 0xd0000000, 0x08000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 */
- { 0xd0800000, 0x18000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 3 */
+ { 0xd0000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 when JP1 3-4 */
#endif
{ 0xdc000000, 0x10000000, 0x00400000, DOMAIN_IO, 0, 1, 0, 0 }, /* CPLD */
SA1100_STD_IO_MAPPING
@@ -104,7 +109,7 @@ static struct map_desc default_io_desc[] __initdata = {
* Here it would be wiser to simply assign a pointer to the appropriate
* list, but io_desc is already declared as an array in "map.h".
*/
-struct map_desc io_desc[20] __initdata = { { 0, }, };
+struct map_desc io_desc[20] __initdata = {};
unsigned int io_desc_size;
void __init select_sa1100_io_desc(void)
@@ -118,6 +123,9 @@ void __init select_sa1100_io_desc(void)
} else if( machine_is_empeg() ) {
memcpy( io_desc, empeg_io_desc, sizeof(empeg_io_desc) );
io_desc_size = SIZE(empeg_io_desc);
+ } else if( machine_is_graphicsclient() ) {
+ memcpy( io_desc, graphicsclient_io_desc, sizeof(graphicsclient_io_desc) );
+ io_desc_size = SIZE(graphicsclient_io_desc);
} else if( machine_is_thinclient() ) {
memcpy( io_desc, thinclient_io_desc, sizeof(thinclient_io_desc) );
io_desc_size = SIZE(thinclient_io_desc);
diff --git a/arch/arm/mm/proc-arm6,7.S b/arch/arm/mm/proc-arm6,7.S
index dd039f208..c2f4f2346 100644
--- a/arch/arm/mm/proc-arm6,7.S
+++ b/arch/arm/mm/proc-arm6,7.S
@@ -254,9 +254,7 @@ ENTRY(cpu_arm7_proc_init)
ENTRY(cpu_arm6_proc_fin)
ENTRY(cpu_arm7_proc_fin)
- mrs r0, cpsr
- orr r0, r0, #F_BIT | I_BIT
- msr cpsr, r0
+ msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
mov r0, #0x31 @ ....S..DP...M
mcr p15, 0, r0, c1, c0, 0 @ disable caches
mov pc, lr
@@ -366,7 +364,8 @@ cpu_arm710_name:
.section ".text.init", #alloc, #execinstr
-__arm6_setup: mov r0, #0
+__arm6_setup: msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
+ mov r0, #0
mcr p15, 0, r0, c7, c0 @ flush caches on v3
mcr p15, 0, r0, c5, c0 @ flush TLBs on v3
mcr p15, 0, r4, c2, c0 @ load page table pointer
@@ -376,7 +375,8 @@ __arm6_setup: mov r0, #0
orr r0, r0, #0x100
mov pc, lr
-__arm7_setup: mov r0, #0
+__arm7_setup: msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
+ mov r0, #0
mcr p15, 0, r0, c7, c0 @ flush caches on v3
mcr p15, 0, r0, c5, c0 @ flush TLBs on v3
mcr p15, 0, r4, c2, c0 @ load page table pointer
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S
index 9ae5fb9d6..ac5d0735e 100644
--- a/arch/arm/mm/proc-sa110.S
+++ b/arch/arm/mm/proc-sa110.S
@@ -423,9 +423,7 @@ ENTRY(cpu_sa1100_proc_init)
ENTRY(cpu_sa110_proc_fin)
stmfd sp!, {r1, lr}
- mrs r0, cpsr
- orr r0, r0, #F_BIT | I_BIT
- msr cpsr, r0
+ msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
bl cpu_sa110_flush_cache_all @ clean caches
1: mov r0, #0
mcr p15, 0, r0, c15, c2, 2 @ Disable clock switching
@@ -437,9 +435,7 @@ ENTRY(cpu_sa110_proc_fin)
ENTRY(cpu_sa1100_proc_fin)
stmfd sp!, {r1, lr}
- mrs r0, cpsr
- orr r0, r0, #F_BIT | I_BIT
- msr cpsr, r0
+ msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
bl cpu_sa1100_flush_cache_all @ clean caches
b 1b
@@ -505,7 +501,8 @@ cpu_sa1110_name:
.section ".text.init", #alloc, #execinstr
-__sa110_setup: mov r0, #0
+__sa110_setup: msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
+ mov r0, #0
mcr p15, 0, r0, c7, c7 @ flush I,D caches on v4
mcr p15, 0, r0, c7, c10, 4 @ drain write buffer on v4
mcr p15, 0, r0, c8, c7 @ flush I,D TLBs on v4