Commit 1a015350 authored by Linus Torvalds's avatar Linus Torvalds

v2.4.3.2 -> v2.4.3.3

  - Hui-Fen Hsu: sis900 driver update
  - NIIBE Yutaka: Super-H update
  - Alan Cox: more resyncs (ARM down, but more to go)
  - David Miller: network zerocopy, Sparc sync, qlogic,FC fix, etc.
  - David Miller/me: get rid of various drivers hacks to do mmap
  alignment behind the back of the VM layer. Create a real
  protocol for it.
parent b0683ac8
...@@ -328,6 +328,9 @@ D: m68k port to HP9000/300 ...@@ -328,6 +328,9 @@ D: m68k port to HP9000/300
D: AUN network protocols D: AUN network protocols
D: Co-architect of the parallel port sharing system D: Co-architect of the parallel port sharing system
D: IPv6 netfilter D: IPv6 netfilter
S: FutureTV Labs Ltd
S: Brunswick House, 61-69 Newmarket Rd, Cambridge CB5 8EG
S: United Kingdom
N: Thomas Bogendrfer N: Thomas Bogendrfer
E: tsbogend@alpha.franken.de E: tsbogend@alpha.franken.de
......
This diff is collapsed.
...@@ -2079,7 +2079,7 @@ ssize_t write_printer (int fd, const void *ptr, size_t count) ...@@ -2079,7 +2079,7 @@ ssize_t write_printer (int fd, const void *ptr, size_t count)
| PARPORT_STATUS_BUSY); | PARPORT_STATUS_BUSY);
unsigned char val = (PARPORT_STATUS_ERROR unsigned char val = (PARPORT_STATUS_ERROR
| PARPORT_STATUS_BUSY); | PARPORT_STATUS_BUSY);
struct parport_frob_struct frob; struct ppdev_frob_struct frob;
struct timespec ts; struct timespec ts;
/* Wait for printer to be ready */ /* Wait for printer to be ready */
......
This diff is collapsed.
This diff is collapsed.
ChangeLog for the UTS Global 3270-support patch
Feb 6, 2001:
* This changelog is new
* tub3270 now supports 3270 console:
Specify y for CONFIG_3270 and y for CONFIG_3270_CONSOLE.
Support for 3215 will not appear if 3270 console support
is chosen.
NOTE: The default is 3270 console support, NOT 3215.
* the components are remodularized: added source modules are
tubttybld.c and tubttyscl.c, for screen-building code and
scroll-timeout code.
* tub3270 source for this (2.4.0) version is #ifdeffed to
build with both 2.4.0 and 2.2.16.2.
* color support and minimal other ESC-sequence support is added.
This diff is collapsed.
Notes on Linux's SG driver version 2.1.36 Notes on Linux's SG driver version 2.1.39
----------------------------------------- -----------------------------------------
20000110 20010329
Introduction Introduction
============ ============
...@@ -12,7 +12,7 @@ Thus sg is used for scanners, cd writers and reading audio cds digitally ...@@ -12,7 +12,7 @@ Thus sg is used for scanners, cd writers and reading audio cds digitally
amongst other things. amongst other things.
These are notes on the Linux SCSI generic packet device driver (sg) These are notes on the Linux SCSI generic packet device driver (sg)
describing version 2.1.36 . The original driver was written by Lawrence describing version 2.1.39 . The original driver was written by Lawrence
Foard and remained in place with minimal changes since circa 1992. Foard and remained in place with minimal changes since circa 1992.
Version 2 of this driver remains backward compatible (binary and Version 2 of this driver remains backward compatible (binary and
source **) with the original. It adds scatter gather, command queuing, source **) with the original. It adds scatter gather, command queuing,
...@@ -23,6 +23,10 @@ This is an abridged version of the sg documentation that is targeted ...@@ -23,6 +23,10 @@ This is an abridged version of the sg documentation that is targeted
at the linux/Documentation directory. The full document can be found at the linux/Documentation directory. The full document can be found
at http://www.torque.net/sg/p/scsi-generic_long.txt . at http://www.torque.net/sg/p/scsi-generic_long.txt .
The Linux 2.4 series kernels have now been released. Lk 2.4 contains
an upgraded "version 3" sg driver which is described in a supplementary
document at http://www.torque.net/sg/p/scsi-generic_v3.txt .
The interface and usage of the original sg driver have been documented The interface and usage of the original sg driver have been documented
by Heiko Eissfeldt in a HOWTO called SCSI-Programming-HOWTO. My copy by Heiko Eissfeldt in a HOWTO called SCSI-Programming-HOWTO. My copy
of the document is version 1.5 dated 7th May 1996. It can found at of the document is version 1.5 dated 7th May 1996. It can found at
...@@ -41,7 +45,8 @@ Architecture ...@@ -41,7 +45,8 @@ Architecture
The SCSI generic packet device driver (sg) is a character based device. The SCSI generic packet device driver (sg) is a character based device.
It is one of the four high level device driver in the SCSI sub-system; It is one of the four high level device driver in the SCSI sub-system;
the others are sd (for direct-access devices - disks), st (for tapes) the others are sd (for direct-access devices - disks), st (for tapes)
and sr (for data cdroms). The other three devices are block devices. and sr (for data cdroms). Sd and sr are block devices while st (like sg)
is a character device.
The unifying layer of the SCSI sub-system is the so-called mid-level. The unifying layer of the SCSI sub-system is the so-called mid-level.
Below that are the "low level" drivers which are the drivers for the Below that are the "low level" drivers which are the drivers for the
...@@ -236,10 +241,11 @@ The filename should be an 'sg' device such as ...@@ -236,10 +241,11 @@ The filename should be an 'sg' device such as
/dev/sg[a-z] /dev/sg[a-z]
/dev/sg[0,1,2,...] /dev/sg[0,1,2,...]
or a symbolic link to one of these. [Devfs has its own sub-directory for or a symbolic link to one of these. [Devfs has its own sub-directory for
sg devices with entries like: /dev/sg/c1b2t3u4 .] It seems as though SCSI sg devices with entries like: /dev/scsi/host1/bus2/target3/lun4/generic .]
devices are allocated to sg minor numbers in the same order as they appear It seems as though SCSI devices are allocated to sg minor numbers in the
in 'cat /proc/scsi/scsi'. Sg is a "character" based Linux device driver. same order as they appear in 'cat /proc/scsi/scsi'. Sg is a "character"
This means it has an open/close/read/write/ioctl type interface. based Linux device driver. This means it has an open/close/read/write/ioctl
type interface.
Flags can be either O_RDONLY or O_RDWR or-ed with either Flags can be either O_RDONLY or O_RDWR or-ed with either
O_EXCL waits for other opens on sg device to be closed before O_EXCL waits for other opens on sg device to be closed before
...@@ -396,7 +402,7 @@ A process that has an open file descriptor to an sg device may be aborted ...@@ -396,7 +402,7 @@ A process that has an open file descriptor to an sg device may be aborted
(which is called 'sg_release()' in the version 2 driver) to facilitate (which is called 'sg_release()' in the version 2 driver) to facilitate
the cleanup mentioned above. the cleanup mentioned above.
A problem persists in version 2.1.36 if the sg driver is a module and is A problem persists in version 2.1.39 if the sg driver is a module and is
removed while packets are still "in flight". removed while packets are still "in flight".
Returns 0 if successful, otherwise -1 implies an error. Returns 0 if successful, otherwise -1 implies an error.
...@@ -595,6 +601,8 @@ Assumes 3rd argument points to an int. Unfortunately doesn't currently ...@@ -595,6 +601,8 @@ Assumes 3rd argument points to an int. Unfortunately doesn't currently
do much (may in the future after other issues are resolved). Yields an do much (may in the future after other issues are resolved). Yields an
EBUSY error if the SCSI bus or the associated device is being reset EBUSY error if the SCSI bus or the associated device is being reset
when this ioctl() is called, otherwise returns 0. when this ioctl() is called, otherwise returns 0.
N.B. In some recent distributions there is a patch to the SCSI mid level
code that activates this ioctl. Check your distribution.
SG_SET_DEBUG +: SG_SET_DEBUG +:
Assumes 3rd argument is pointing to an int. 0 (default) turns debugging Assumes 3rd argument is pointing to an int. 0 (default) turns debugging
...@@ -640,7 +648,7 @@ an O_EXCL lock by another process, and when the appropriate device is ...@@ -640,7 +648,7 @@ an O_EXCL lock by another process, and when the appropriate device is
found, switching to normal blocked io. A working example of this logic found, switching to normal blocked io. A working example of this logic
is in the sg_scan utility program. is in the sg_scan utility program.
open("/dev/sga", O_RDONLY | O_NONBLOCK) open("/dev/sg0", O_RDONLY | O_NONBLOCK)
/* check device, EBUSY means some other process has O_EXCL lock on it */ /* check device, EBUSY means some other process has O_EXCL lock on it */
/* when the device you want is found then ... */ /* when the device you want is found then ... */
flags = fcntl(sg_fd, F_GETFL) flags = fcntl(sg_fd, F_GETFL)
......
...@@ -1494,8 +1494,8 @@ W: http://roadrunner.swansea.linux.org.uk/v4l.shtml ...@@ -1494,8 +1494,8 @@ W: http://roadrunner.swansea.linux.org.uk/v4l.shtml
S: Maintained for 2.2 only S: Maintained for 2.2 only
WAN ROUTER & SANGOMA WANPIPE DRIVERS & API (X.25, FRAME RELAY, PPP, CISCO HDLC) WAN ROUTER & SANGOMA WANPIPE DRIVERS & API (X.25, FRAME RELAY, PPP, CISCO HDLC)
P: Jaspreet Singh P: Nenad Corbic
M: jaspreet@sangoma.com M: ncorbic@sangoma.com
M: dm@sangoma.com M: dm@sangoma.com
W: http://www.sangoma.com W: http://www.sangoma.com
S: Supported S: Supported
......
VERSION = 2 VERSION = 2
PATCHLEVEL = 4 PATCHLEVEL = 4
SUBLEVEL = 4 SUBLEVEL = 4
EXTRAVERSION =-pre2 EXTRAVERSION =-pre3
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
# #
# arch/arm/Makefile # arch/arm/Makefile
# #
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" and "archdep" for cleaning up and making dependencies for
# this architecture
#
# This file is subject to the terms and conditions of the GNU General Public # 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 # License. See the file "COPYING" in the main directory of this archive
# for more details. # for more details.
# #
# Copyright (C) 1995-2000 by Russell King # Copyright (C) 1995-2001 by Russell King
LINKFLAGS :=-p -X -T arch/arm/vmlinux.lds LINKFLAGS :=-p -X -T arch/arm/vmlinux.lds
GZFLAGS :=-9 GZFLAGS :=-9
CFLAGS +=-fno-common -pipe CFLAGS +=-fno-common -pipe
ifdef CONFIG_FRAME_POINTER ifneq ($(CONFIG_NO_FRAME_POINTER),y)
CFLAGS :=$(CFLAGS:-fomit-frame-pointer=) CFLAGS :=$(CFLAGS:-fomit-frame-pointer=)
endif endif
ifdef CONFIG_DEBUG_INFO ifeq ($(CONFIG_DEBUG_INFO),y)
CFLAGS +=-g CFLAGS +=-g
endif endif
# Ensure this is ld "2.9.4" or later
NEW_LINKER := $(shell $(LD) --gc-sections --version >/dev/null 2>&1; echo $$?)
ifneq ($(NEW_LINKER),0)
dummy:; @echo '*** ${VERSION}.${PATCHLEVEL} kernels no longer build correctly with old versions of binutils.'
@echo '*** Please upgrade your binutils to 2.9.5.'
@false
endif
# Select CPU dependent flags. Note that order of declaration is important; # Select CPU dependent flags. Note that order of declaration is important;
# the options further down the list override previous items. # the options further down the list override previous items.
# #
apcs-$(CONFIG_CPU_26) :=-mapcs-26 -mcpu=arm3 -Os apcs-y :=
apcs-$(CONFIG_CPU_32) :=-mapcs-32 apcs-$(CONFIG_CPU_26) :=-mcpu=arm3 -Os
arch-$(CONFIG_CPU_32v3) :=-march=armv3 arch-y :=
arch-$(CONFIG_CPU_32v3) :=-march=armv3m
arch-$(CONFIG_CPU_32v4) :=-march=armv4 arch-$(CONFIG_CPU_32v4) :=-march=armv4
arch-$(CONFIG_CPU_32v5) :=-march=armv5 arch-$(CONFIG_CPU_32v5) :=-march=armv5
proc-$(CONFIG_CPU_32v3) :=-marmv3m tune-y :=
proc-$(CONFIG_CPU_32v4) :=-marmv4
proc-$(CONFIG_CPU_32v5) :=-marmv5
tune-$(CONFIG_CPU_ARM610) :=-mtune=arm610 tune-$(CONFIG_CPU_ARM610) :=-mtune=arm610
tune-$(CONFIG_CPU_ARM710) :=-mtune=arm710 tune-$(CONFIG_CPU_ARM710) :=-mtune=arm710
tune-$(CONFIG_CPU_ARM720T) :=-mtune=arm7tdmi tune-$(CONFIG_CPU_ARM720T) :=-mtune=arm7tdmi
...@@ -54,19 +38,27 @@ tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi ...@@ -54,19 +38,27 @@ tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110 tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110
tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
CFLAGS += $(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float CFLAGS += -mapcs-32 $(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float
AFLAGS += $(apcs-y) $(proc-y) -mno-fpu AFLAGS += -mapcs-32 $(apcs-y) $(arch-y) -mno-fpu
LIBGCC := $(shell $(CC) $(CFLAGS) --print-libgcc-file-name) LIBGCC := $(shell $(CC) $(CFLAGS) --print-libgcc-file-name)
ifeq ($(CONFIG_CPU_26),y) ifeq ($(CONFIG_CPU_26),y)
PROCESSOR = armo PROCESSOR = armo
TEXTADDR = 0x02080000 ifeq ($(CONFIG_ROM_KERNEL),y)
DATAADDR = 0x02080000
TEXTADDR = 0x03800000
LDSCRIPT = arch/arm/vmlinux-armo-rom.lds.in
else
TEXTADDR = 0x02080000
LDSCRIPT = arch/arm/vmlinux-armo.lds.in
endif
endif endif
ifeq ($(CONFIG_CPU_32),y) ifeq ($(CONFIG_CPU_32),y)
PROCESSOR = armv PROCESSOR = armv
TEXTADDR = 0xC0008000 TEXTADDR = 0xC0008000
LDSCRIPT = arch/arm/vmlinux-armv.lds.in
endif endif
ifeq ($(CONFIG_ARCH_ARCA5K),y) ifeq ($(CONFIG_ARCH_ARCA5K),y)
...@@ -97,8 +89,13 @@ MACHINE = footbridge ...@@ -97,8 +89,13 @@ MACHINE = footbridge
INCDIR = ebsa285 INCDIR = ebsa285
endif endif
ifeq ($(CONFIG_ARCH_NEXUSPCI),y) ifeq ($(CONFIG_ARCH_FTVPCI),y)
MACHINE = nexuspci MACHINE = ftvpci
INCDIR = nexuspci
endif
ifeq ($(CONFIG_ARCH_TBOX),y)
MACHINE = tbox
endif endif
ifeq ($(CONFIG_ARCH_SHARK),y) ifeq ($(CONFIG_ARCH_SHARK),y)
...@@ -134,6 +131,10 @@ ifeq ($(origin INCDIR), undefined) ...@@ -134,6 +131,10 @@ ifeq ($(origin INCDIR), undefined)
INCDIR := $(MACHINE) INCDIR := $(MACHINE)
endif endif
ifeq ($(origin DATAADDR), undefined)
DATAADDR := .
endif
# If we have a machine-specific directory, then include it in the build. # If we have a machine-specific directory, then include it in the build.
MACHDIR := arch/arm/mach-$(MACHINE) MACHDIR := arch/arm/mach-$(MACHINE)
ifeq ($(MACHDIR),$(wildcard $(MACHDIR))) ifeq ($(MACHDIR),$(wildcard $(MACHDIR)))
...@@ -143,13 +144,17 @@ endif ...@@ -143,13 +144,17 @@ endif
HEAD := arch/arm/kernel/head-$(PROCESSOR).o \ HEAD := arch/arm/kernel/head-$(PROCESSOR).o \
arch/arm/kernel/init_task.o arch/arm/kernel/init_task.o
SUBDIRS += arch/arm/kernel arch/arm/mm arch/arm/lib arch/arm/nwfpe SUBDIRS += arch/arm/kernel arch/arm/mm arch/arm/lib arch/arm/nwfpe \
arch/arm/fastfpe
CORE_FILES := arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES) CORE_FILES := arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES)
LIBS := arch/arm/lib/lib.o arch/arm/lib/lib.a $(LIBS) $(LIBGCC) LIBS := arch/arm/lib/lib.a $(LIBS) $(LIBGCC)
ifeq ($(CONFIG_NWFPE),y) ifeq ($(CONFIG_FPE_NWFPE),y)
LIBS := arch/arm/nwfpe/math-emu.o $(LIBS) LIBS := arch/arm/nwfpe/math-emu.o $(LIBS)
endif endif
ifeq ($(CONFIG_FPE_FASTFPE),y)
LIBS := arch/arm/fastfpe/fast-math-emu.o $(LIBS)
endif
ifeq ($(CONFIG_ARCH_CLPS7500),y) ifeq ($(CONFIG_ARCH_CLPS7500),y)
SUBDIRS += drivers/acorn/char SUBDIRS += drivers/acorn/char
...@@ -157,21 +162,13 @@ DRIVERS += drivers/acorn/char/acorn-char.o ...@@ -157,21 +162,13 @@ DRIVERS += drivers/acorn/char/acorn-char.o
endif endif
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
MAKETOOLS = $(MAKE) -C arch/$(ARCH)/tools
# The following is a hack to get 'constants.h' up # The following is a hack to get 'constants.h' up
# to date before starting compilation # to date before starting compilation
$(patsubst %, _dir_%, $(SUBDIRS)) init/main.o init/version.o : \ $(patsubst %,_dir_%, $(SUBDIRS)): maketools
include/asm-arm/mach-types.h $(patsubst %,_modsubdir_%,$(MOD_DIRS)): maketools
$(patsubst %, _dir_%, $(SUBDIRS)) : constants
include/asm-arm/mach-types.h: arch/arm/tools/mach-types \
arch/arm/tools/gen-mach-types
@awk -f arch/arm/tools/gen-mach-types arch/arm/tools/mach-types > $@
constants: dummy
@$(MAKE) -C arch/arm/lib constants.h
symlinks: archsymlinks symlinks: archsymlinks
...@@ -181,8 +178,8 @@ archsymlinks: ...@@ -181,8 +178,8 @@ archsymlinks:
vmlinux: arch/arm/vmlinux.lds vmlinux: arch/arm/vmlinux.lds
arch/arm/vmlinux.lds: arch/arm/vmlinux-$(PROCESSOR).lds.in dummy arch/arm/vmlinux.lds: $(LDSCRIPT) dummy
@sed 's/TEXTADDR/$(TEXTADDR)/' <$< >$@ @sed 's/TEXTADDR/$(TEXTADDR)/;s/DATAADDR/$(DATAADDR)/' $(LDSCRIPT) >$@
arch/arm/kernel arch/arm/mm arch/arm/lib: dummy arch/arm/kernel arch/arm/mm arch/arm/lib: dummy
$(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@) $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@)
...@@ -190,17 +187,42 @@ arch/arm/kernel arch/arm/mm arch/arm/lib: dummy ...@@ -190,17 +187,42 @@ arch/arm/kernel arch/arm/mm arch/arm/lib: dummy
bzImage zImage zinstall Image bootpImage install: vmlinux bzImage zImage zinstall Image bootpImage install: vmlinux
@$(MAKEBOOT) $@ @$(MAKEBOOT) $@
CLEAN_FILES += \
arch/arm/vmlinux.lds
MRPROPER_FILES += \
include/asm-arm/arch \
include/asm-arm/proc \
include/asm-arm/constants.h* \
include/asm-arm/mach-types.h
# We use MRPROPER_FILES and CLEAN_FILES now
archmrproper: archmrproper:
$(RM) include/asm-arm/arch include/asm-arm/proc @/bin/true
archclean: archclean:
@$(MAKEBOOT) clean @$(MAKEBOOT) clean
$(RM) arch/arm/lib/constants.h arch/arm/vmlinux.lds
$(RM) include/asm-arm/mach-types.h
archdep: archsymlinks archdep: scripts/mkdep archsymlinks
@$(MAKETOOLS) dep
@$(MAKEBOOT) dep @$(MAKEBOOT) dep
maketools: checkbin
@$(MAKETOOLS) all
# Ensure this is ld "2.9.4" or later
NEW_LINKER := $(shell $(LD) --gc-sections --version >/dev/null 2>&1; echo $$?)
ifneq ($(NEW_LINKER),0)
checkbin:
@echo '*** ${VERSION}.${PATCHLEVEL} kernels no longer build correctly with old versions of binutils.'
@echo '*** Please upgrade your binutils to 2.9.5.'
@false
else
checkbin:
@true
endif
# My testing targets (that short circuit a few dependencies) # My testing targets (that short circuit a few dependencies)
zImg:; @$(MAKEBOOT) zImage zImg:; @$(MAKEBOOT) zImage
Img:; @$(MAKEBOOT) Image Img:; @$(MAKEBOOT) Image
...@@ -211,15 +233,7 @@ bp:; @$(MAKEBOOT) bootpImage ...@@ -211,15 +233,7 @@ bp:; @$(MAKEBOOT) bootpImage
# #
# Configuration targets. Use these to select a # Configuration targets. Use these to select a
# configuration for your architecture # configuration for your architecture
CFGS= a5k_config ebsa110_config \ %_config:
footbridge_config rpc_config \
brutus_config victor_config \
empeg_config graphicsclient_config \
assabet_config lart_config \
cerf_config lusl7200_config \
sherman_config pangolin_config
$(CFGS):
@( \ @( \
CFG=$(@:_config=); \ CFG=$(@:_config=); \
if [ -f arch/arm/def-configs/$$CFG ]; then \ if [ -f arch/arm/def-configs/$$CFG ]; then \
......
...@@ -55,8 +55,7 @@ INITRD_VIRT = 0xc0800000 ...@@ -55,8 +55,7 @@ INITRD_VIRT = 0xc0800000
endif endif
ifeq ($(CONFIG_ARCH_NEXUSPCI),y) ifeq ($(CONFIG_ARCH_NEXUSPCI),y)
ZTEXTADDR = 0x40200000 ZTEXTADDR = 0x40008000
ZRELADDR = 0x40008000
endif endif
ifeq ($(CONFIG_ARCH_L7200),y) ifeq ($(CONFIG_ARCH_L7200),y)
...@@ -72,7 +71,6 @@ endif ...@@ -72,7 +71,6 @@ endif
ifeq ($(CONFIG_ARCH_P720T),y) ifeq ($(CONFIG_ARCH_P720T),y)
ZTEXTADDR = 0xc0018000 ZTEXTADDR = 0xc0018000
ZRELADDR = 0xc0018000
PARAMS_PHYS = 0xc0000100 PARAMS_PHYS = 0xc0000100
INITRD_PHYS = 0xc0400000 INITRD_PHYS = 0xc0400000
INITRD_VIRT = 0xc0400000 INITRD_VIRT = 0xc0400000
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
HEAD = head.o HEAD = head.o
OBJS = misc.o OBJS = misc.o
CFLAGS = $(CPPFLAGS) -O2 -DSTDC_HEADERS $(CFLAGS_PROC) CFLAGS = $(CPPFLAGS) -O2 -DSTDC_HEADERS $(CFLAGS_PROC) -msoft-float
FONTC = $(TOPDIR)/drivers/video/font_acorn_8x8.c FONTC = $(TOPDIR)/drivers/video/font_acorn_8x8.c
ZLDFLAGS = -p -X -T vmlinux.lds ZLDFLAGS = -p -X -T vmlinux.lds
...@@ -25,18 +25,26 @@ ifeq ($(CONFIG_ARCH_NETWINDER),y) ...@@ -25,18 +25,26 @@ ifeq ($(CONFIG_ARCH_NETWINDER),y)
OBJS += head-netwinder.o OBJS += head-netwinder.o
endif endif
ifeq ($(CONFIG_ARCH_SHARK),y)
OBJS += head-shark.o ofw-shark.o
endif
ifeq ($(CONFIG_ARCH_INTEGRATOR),y) ifeq ($(CONFIG_ARCH_INTEGRATOR),y)
OBJS += head-netwinder.o OBJS += head-netwinder.o
endif endif
ifeq ($(CONFIG_ARCH_NEXUSPCI),y) ifeq ($(CONFIG_ARCH_FTVPCI),y)
HEAD = head-nexuspci.o OBJS += head-ftvpci.o
endif endif
ifeq ($(CONFIG_ARCH_L7200),y) ifeq ($(CONFIG_ARCH_L7200),y)
OBJS += head-l7200.o OBJS += head-l7200.o
endif endif
ifeq ($(CONFIG_ARCH_CLPS7500),y)
HEAD = head-clps7500.o
endif
ifeq ($(CONFIG_ARCH_P720T),y) ifeq ($(CONFIG_ARCH_P720T),y)
# Borrow this code from SA1100 # Borrow this code from SA1100
OBJS += head-sa1100.o OBJS += head-sa1100.o
......
/*
* linux/arch/arm/boot/compressed/head.S
*
* Copyright (C) 1999, 2000, 2001 Nexus Electronics Ltd
*/
#include <linux/config.h>
/* There are three different ways the kernel can be
booted on a 7500 system: from Angel (loaded in RAM), from
16-bit ROM or from 32-bit Flash. Luckily, a single kernel
image does for them all. */
/* This branch is taken if the CPU memory width matches the
actual device in use. The default at power on is 16 bits
so we must be prepared for a mismatch. */
.section ".start", #alloc, #execinstr
2:
b 1f
.word 0xffff
.word 0xb632 @ mov r11, #0x03200000
.word 0xe3a0
.word 0x0000 @ mov r0, #0
.word 0xe3a0
.word 0x0080 @ strb r0, [r11, #0x80]
.word 0xe5cb
.word 0xf000 @ mov pc, #0
.word 0xe3a0
1:
adr r1, 2b
teq r1, #0
bne .Langel
/* This is a direct-from-ROM boot. Copy the kernel into
RAM and run it there. */
mov r0, #0x30
mcr p15, 0, r0, c1, c0, 0
mov r0, #0x13
msr cpsr, r0
mov r12, #0x03000000 @ point to LEDs
orr r12, r12, #0x00020000
orr r12, r12, #0xba00
mov r0, #0x5500
str r0, [r12]
mov r0, #0x10000000
orr r0, r0, #0x8000
mov r4, r0
ldr r2, =_end
2:
ldr r3, [r1], #4
str r3, [r0], #4
teq r0, r2
bne 2b
mov r0, #0xff00
str r0, [r12]
1:
mov r12, #0x03000000 @ point to LEDs
orr r12, r12, #0x00020000
orr r12, r12, #0xba00
mov r0, #0xfe00
str r0, [r12]
adr lr, 1f
mov r0, #0
mov r1, #14 /* MACH_TYPE_CLPS7500 */
mov pc, lr
.Langel:
#ifdef CONFIG_ANGELBOOT
/* Call Angel to switch into SVC mode. */
mov r0, #0x17
swi 0x123456
#endif
/* Ensure all interrupts are off and MMU disabled */
mrs r0, cpsr
orr r0, r0, #0xc0
msr cpsr, r0
adr lr, 1b
orr lr, lr, #0x10000000
mov r0, #0x30 @ MMU off
mcr p15, 0, r0, c1, c0, 0
mov r0, r0
mov pc, lr
.ltorg
1:
/* And the rest */
#include "head.S"
/* The head-file for the Shark /* The head-file for the Shark
* by Alexander.Schulz@stud.uni-karlsruhe.de * by Alexander Schulz <aschulz@netwinder.org>
* *
* Does the following: * Does the following:
* - get the memory layout from firmware. This can only be done as long as the mmu * - get the memory layout from firmware. This can only be done as long as the mmu
...@@ -20,8 +20,6 @@ ...@@ -20,8 +20,6 @@
b __beginning b __beginning
__serial_addr: .long 0xf7eff3f8
.long 0 @ space
__ofw_data: .long 0 @ the number of memory blocks __ofw_data: .long 0 @ the number of memory blocks
.space 128 @ (startaddr,size) ... .space 128 @ (startaddr,size) ...
.space 128 @ bootargs .space 128 @ bootargs
...@@ -31,14 +29,10 @@ __beginning: mov r4, r0 @ save the entry to the firmware ...@@ -31,14 +29,10 @@ __beginning: mov r4, r0 @ save the entry to the firmware
mov r0, #0xC0 @ disable irq and fiq mov r0, #0xC0 @ disable irq and fiq
mov r1, r0 mov r1, r0
mrs r3, cpsr_all mrs r3, cpsr
bic r2, r3, r0 bic r2, r3, r0
eor r2, r2, r1 eor r2, r2, r1
msr cpsr_all, r2 msr cpsr_c, r2
ldr r0, __serial_addr @ disable serial interrupt
mov r1, #0 @ hangs the machine, I don t know why.
strb r1, [r0, #0x01]
mov r0, r4 @ get the Memory layout from firmware mov r0, r4 @ get the Memory layout from firmware
adr r1, __ofw_data adr r1, __ofw_data
......
...@@ -87,7 +87,8 @@ start: ...@@ -87,7 +87,8 @@ start:
b 1f b 1f
.word 0x016f2818 @ Magic numbers to help the loader .word 0x016f2818 @ Magic numbers to help the loader
.word start .word start @ absolute load/run zImage address
.word _edata @ zImage end address
1: mov r7, r1 @ save architecture ID 1: mov r7, r1 @ save architecture ID
mov r8, #0 @ save r0 mov r8, #0 @ save r0
#ifdef CONFIG_ANGELBOOT #ifdef CONFIG_ANGELBOOT
...@@ -210,7 +211,7 @@ cache_on: ldr r1, proc_sa110_type ...@@ -210,7 +211,7 @@ cache_on: ldr r1, proc_sa110_type
mov r0, r3 mov r0, r3
mov r8, r0, lsr #18 mov r8, r0, lsr #18
mov r8, r8, lsl #18 @ start of RAM mov r8, r8, lsl #18 @ start of RAM
add r9, r8, #0x20000000 @ the maximum RAM size add r9, r8, #0x10000000 @ a reasonable RAM size
mov r1, #0x12 mov r1, #0x12
orr r1, r1, #3 << 10 orr r1, r1, #3 << 10
add r2, r3, #16384 add r2, r3, #16384
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
@ Regs: [] = corruptible @ Regs: [] = corruptible
@ {} = used @ {} = used
@ () = do not use @ () = do not use
#define __ASSEMBLY__
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
.text .text
......
/* /*
* linux/arch/arm/boot/compressed/ofw-shark.c * linux/arch/arm/boot/compressed/ofw-shark.c
* *
* by Alexander.Schulz@stud.uni-karlsruhe.de * by Alexander Schulz <aschulz@netwinder.org>
* *
* This file is used to get some basic information * This file is used to get some basic information
* about the memory layout of the shark we are running * about the memory layout of the shark we are running
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/page.h> #include <asm/page.h>
...@@ -18,7 +19,7 @@ ...@@ -18,7 +19,7 @@
asmlinkage void asmlinkage void
create_params (unsigned long *buffer) create_params (unsigned long *buffer)
{ {
/* Is there a better address? Also change in kernel/arch.c */ /* Is there a better address? Also change in mach-shark/arch.c */
struct param_struct *params = (struct param_struct *) 0x08003000; struct param_struct *params = (struct param_struct *) 0x08003000;
int j,i,m,k,nr_banks,size; int j,i,m,k,nr_banks,size;
......
...@@ -24,6 +24,9 @@ GPIO_BASE: .long 0x90040000 ...@@ -24,6 +24,9 @@ GPIO_BASE: .long 0x90040000
PPC_BASE: .long 0x90060000 PPC_BASE: .long 0x90060000
#define PPAR 0x08 #define PPAR 0x08
IC_BASE: .long 0x90050000
#define ICMR 0x04
UART1_BASE: .long 0x80010000 UART1_BASE: .long 0x80010000
UART3_BASE: .long 0x80050000 UART3_BASE: .long 0x80050000
#define UTCR0 0x00 #define UTCR0 0x00
...@@ -52,6 +55,11 @@ SCR_loc: .long SYMBOL_NAME(SCR_value) ...@@ -52,6 +55,11 @@ SCR_loc: .long SYMBOL_NAME(SCR_value)
ENTRY(sa1100_setup) ENTRY(sa1100_setup)
mov r3, r0 @ keep machine type in r3 mov r3, r0 @ keep machine type in r3
@ Clear all interrupt sources
ldr r0, IC_BASE
mov r1, #0
str r1, [r0, #ICMR]
@ Read System Configuration "Register" for Assabet. @ Read System Configuration "Register" for Assabet.
@ (taken from "Intel StrongARM SA-1110 Microprocessor Development Board @ (taken from "Intel StrongARM SA-1110 Microprocessor Development Board
@ User's Guide," p.4-9) @ User's Guide," p.4-9)
...@@ -87,6 +95,7 @@ skip_SCR: ...@@ -87,6 +95,7 @@ skip_SCR:
@ Initialize UART (if bootloader has not done it yet)... @ Initialize UART (if bootloader has not done it yet)...
teq r3, #MACH_TYPE_BRUTUS teq r3, #MACH_TYPE_BRUTUS
teqne r3, #MACH_TYPE_ASSABET teqne r3, #MACH_TYPE_ASSABET
teqne r3, #MACH_TYPE_GRAPHICSCLIENT
bne skip_uart bne skip_uart
@ UART3 if Assabet is used with Neponset @ UART3 if Assabet is used with Neponset
...@@ -95,6 +104,11 @@ skip_SCR: ...@@ -95,6 +104,11 @@ skip_SCR:
ldreq r0, UART3_BASE ldreq r0, UART3_BASE
beq uart_init beq uart_init
@ UART3 on GraphicsClient
teq r3, #MACH_TYPE_GRAPHICSCLIENT
ldreq r0, UART3_BASE
beq uart_init
@ At least for Brutus, the UART1 is used through @ At least for Brutus, the UART1 is used through
@ the alternate GPIO function... @ the alternate GPIO function...
teq r3, #MACH_TYPE_BRUTUS teq r3, #MACH_TYPE_BRUTUS
...@@ -115,7 +129,8 @@ alt_GPIO_uart: ldr r0, GPIO_BASE ...@@ -115,7 +129,8 @@ alt_GPIO_uart: ldr r0, GPIO_BASE
uart1: ldr r0, UART1_BASE uart1: ldr r0, UART1_BASE
uart_init: ldr r1, [r0, #UTSR1] uart_init:
1: ldr r1, [r0, #UTSR1]
tst r1, #1<<0 @ TBY tst r1, #1<<0 @ TBY
bne 1b bne 1b
mov r1, #0 mov r1, #0
......
This diff is collapsed.
...@@ -13,16 +13,18 @@ ENTRY_OBJ = entry-$(PROCESSOR).o ...@@ -13,16 +13,18 @@ ENTRY_OBJ = entry-$(PROCESSOR).o
AFLAGS_head-armv.o := -DTEXTADDR=$(TEXTADDR) AFLAGS_head-armv.o := -DTEXTADDR=$(TEXTADDR)
AFLAGS_head-armo.o := -DTEXTADDR=$(TEXTADDR) AFLAGS_head-armo.o := -DTEXTADDR=$(TEXTADDR)
# This is depreciated.
O_OBJS_arc = dma-arc.o oldlatches.o O_OBJS_arc = dma-arc.o oldlatches.o
O_OBJS_rpc = dma-rpc.o O_OBJS_rpc = dma-rpc.o
O_OBJS_footbridge = dma-footbridge.o isa.o O_OBJS_footbridge = dma-footbridge.o isa.o
O_OBJS_l7200 = fiq.o O_OBJS_l7200 = fiq.o
pci-nexuspci = plx90x0.o pci-ftvpci = plx90x0.o
pci-footbridge = dec21285.o pci-footbridge = dec21285.o
pci-shark = via82c505.o pci-shark = via82c505.o
pci-$(CONFIG_ARCH_NEXUSPCI) += ftv-pci.o # this is here to allow us to eventually move it out to mach-ftvpci
pci-$(CONFIG_ARCH_FTVPCI) += ftv-pci.o
O_TARGET := kernel.o O_TARGET := kernel.o
...@@ -36,7 +38,7 @@ obj-m := ...@@ -36,7 +38,7 @@ obj-m :=
obj-n := obj-n :=
obj- := obj- :=
export-objs := armksyms.o dma.o ecard.o fiq.o oldlatches.o time.o export-objs := armksyms.o dma.o ecard.o fiq.o io.o oldlatches.o time.o
no-irq-arch := $(CONFIG_ARCH_INTEGRATOR) $(CONFIG_ARCH_CLPS711X) \ no-irq-arch := $(CONFIG_ARCH_INTEGRATOR) $(CONFIG_ARCH_CLPS711X) \
$(CONFIG_ARCH_FOOTBRIDGE) $(CONFIG_ARCH_EBSA110) $(CONFIG_ARCH_FOOTBRIDGE) $(CONFIG_ARCH_EBSA110)
...@@ -46,16 +48,21 @@ ifneq ($(findstring y,$(no-irq-arch)),y) ...@@ -46,16 +48,21 @@ ifneq ($(findstring y,$(no-irq-arch)),y)
endif endif
obj-$(CONFIG_ARCH_ACORN) += ecard.o fiq.o time-acorn.o obj-$(CONFIG_ARCH_ACORN) += ecard.o fiq.o time-acorn.o
obj-$(CONFIG_ARCH_CLPS7500) += time-acorn.o
obj-$(CONFIG_DEBUG_LL) += debug-$(PROCESSOR).o obj-$(CONFIG_DEBUG_LL) += debug-$(PROCESSOR).o
obj-$(CONFIG_MODULES) += armksyms.o obj-$(CONFIG_MODULES) += armksyms.o
obj-$(CONFIG_ARTHUR) += arthur.o obj-$(CONFIG_ARTHUR) += arthur.o
obj-$(CONFIG_ISA_DMA) += dma-isa.o obj-$(CONFIG_ISA_DMA) += dma-isa.o
obj-$(CONFIG_PCI) += bios32.o $(pci-$(MACHINE)) $(pci-y) obj-$(CONFIG_PCI) += bios32.o $(pci-$(MACHINE)) $(pci-y)
ifneq ($(MACHINE),ebsa110)
obj-y += io.o
endif
all: kernel.o $(HEAD_OBJ) init_task.o all: kernel.o $(HEAD_OBJ) init_task.o
include $(TOPDIR)/Rules.make include $(TOPDIR)/Rules.make
# Spell out some dependencies that `make dep' doesn't spot # Spell out some dependencies that `make dep' doesn't spot
entry-armv.o: calls.S ../lib/constants.h entry-armv.o: calls.S $(TOPDIR)/include/asm-arm/constants.h
entry-armo.o: calls.S ../lib/constants.h entry-armo.o: calls.S $(TOPDIR)/include/asm-arm/constants.h
...@@ -19,10 +19,9 @@ ...@@ -19,10 +19,9 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/hardware/dec21285.h> #include <asm/hardware/dec21285.h>
unsigned int vram_size; extern void genarch_init_irq(void);
extern void setup_initrd(unsigned int start, unsigned int size); unsigned int vram_size;
extern void setup_ramdisk(int doload, int prompt, int start, unsigned int rd_sz);
#ifdef CONFIG_ARCH_ACORN #ifdef CONFIG_ARCH_ACORN
...@@ -79,6 +78,7 @@ MACHINE_START(RISCPC, "Acorn-RiscPC") ...@@ -79,6 +78,7 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
DISABLE_PARPORT(1) DISABLE_PARPORT(1)
FIXUP(fixup_acorn) FIXUP(fixup_acorn)
MAPIO(rpc_map_io) MAPIO(rpc_map_io)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_ARC #ifdef CONFIG_ARCH_ARC
...@@ -86,6 +86,7 @@ MACHINE_START(ARCHIMEDES, "Acorn-Archimedes") ...@@ -86,6 +86,7 @@ MACHINE_START(ARCHIMEDES, "Acorn-Archimedes")
MAINTAINER("Dave Gilbert") MAINTAINER("Dave Gilbert")
BOOT_PARAMS(0x0207c000) BOOT_PARAMS(0x0207c000)
FIXUP(fixup_acorn) FIXUP(fixup_acorn)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_A5K #ifdef CONFIG_ARCH_A5K
...@@ -93,11 +94,13 @@ MACHINE_START(A5K, "Acorn-A5000") ...@@ -93,11 +94,13 @@ MACHINE_START(A5K, "Acorn-A5000")
MAINTAINER("Russell King") MAINTAINER("Russell King")
BOOT_PARAMS(0x0207c000) BOOT_PARAMS(0x0207c000)
FIXUP(fixup_acorn) FIXUP(fixup_acorn)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#endif #endif
#ifdef CONFIG_ARCH_L7200 #ifdef CONFIG_ARCH_L7200
extern void __init l7200_map_io(void);
static void __init static void __init
fixup_l7200(struct machine_desc *desc, struct param_struct *params, fixup_l7200(struct machine_desc *desc, struct param_struct *params,
...@@ -109,34 +112,28 @@ fixup_l7200(struct machine_desc *desc, struct param_struct *params, ...@@ -109,34 +112,28 @@ fixup_l7200(struct machine_desc *desc, struct param_struct *params,
mi->bank[0].node = 0; mi->bank[0].node = 0;
ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
setup_ramdisk( 1, 0, 0, 8192 ); setup_ramdisk( 1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE);
setup_initrd( __phys_to_virt(0xf1000000), 0x00162b0d); setup_initrd( __phys_to_virt(0xf1000000), 0x005dac7b);
}
extern void __init l7200_map_io(void); /* Serial Console COM2 and LCD */
strcpy( *cmdline, "console=tty0 console=ttyLU1,115200");
/* Serial Console COM1 and LCD */
//strcpy( *cmdline, "console=tty0 console=ttyLU0,115200");
/* Console on LCD */
//strcpy( *cmdline, "console=tty0");
}
MACHINE_START(L7200, "LinkUp Systems L7200SDB") MACHINE_START(L7200, "LinkUp Systems L7200")
MAINTAINER("Steve Hill") MAINTAINER("Steve Hill / Scott McConnell")
BOOT_MEM(0xf0000000, 0x80040000, 0xd0000000) BOOT_MEM(0xf0000000, 0x80040000, 0xd0000000)
FIXUP(fixup_l7200) FIXUP(fixup_l7200)
MAPIO(l7200_map_io) MAPIO(l7200_map_io)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_EBSA110
extern void __init ebsa110_map_io(void);
MACHINE_START(EBSA110, "EBSA110")
MAINTAINER("Russell King")
BOOT_MEM(0x00000000, 0xe0000000, 0xe0000000)
BOOT_PARAMS(0x00000400)
DISABLE_PARPORT(0)
DISABLE_PARPORT(2)
SOFT_REBOOT
MAPIO(ebsa110_map_io)
MACHINE_END
#endif
#ifdef CONFIG_ARCH_NEXUSPCI #ifdef CONFIG_ARCH_NEXUSPCI
extern void __init nexuspci_map_io(void); extern void __init nexuspci_map_io(void);
...@@ -145,6 +142,7 @@ MACHINE_START(NEXUSPCI, "FTV/PCI") ...@@ -145,6 +142,7 @@ MACHINE_START(NEXUSPCI, "FTV/PCI")
MAINTAINER("Philip Blundell") MAINTAINER("Philip Blundell")
BOOT_MEM(0x40000000, 0x10000000, 0xe0000000) BOOT_MEM(0x40000000, 0x10000000, 0xe0000000)
MAPIO(nexuspci_map_io) MAPIO(nexuspci_map_io)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_TBOX #ifdef CONFIG_ARCH_TBOX
...@@ -155,21 +153,25 @@ MACHINE_START(TBOX, "unknown-TBOX") ...@@ -155,21 +153,25 @@ MACHINE_START(TBOX, "unknown-TBOX")
MAINTAINER("Philip Blundell") MAINTAINER("Philip Blundell")
BOOT_MEM(0x80000000, 0x00400000, 0xe0000000) BOOT_MEM(0x80000000, 0x00400000, 0xe0000000)
MAPIO(tbox_map_io) MAPIO(tbox_map_io)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_CLPS7110 #ifdef CONFIG_ARCH_CLPS7110
MACHINE_START(CLPS7110, "CL-PS7110") MACHINE_START(CLPS7110, "CL-PS7110")
MAINTAINER("Werner Almesberger") MAINTAINER("Werner Almesberger")
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_ETOILE #ifdef CONFIG_ARCH_ETOILE
MACHINE_START(ETOILE, "Etoile") MACHINE_START(ETOILE, "Etoile")
MAINTAINER("Alex de Vries") MAINTAINER("Alex de Vries")
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_LACIE_NAS #ifdef CONFIG_ARCH_LACIE_NAS
MACHINE_START(LACIE_NAS, "LaCie_NAS") MACHINE_START(LACIE_NAS, "LaCie_NAS")
MAINTAINER("Benjamin Herrenschmidt") MAINTAINER("Benjamin Herrenschmidt")
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_CLPS7500 #ifdef CONFIG_ARCH_CLPS7500
...@@ -180,5 +182,6 @@ MACHINE_START(CLPS7500, "CL-PS7500") ...@@ -180,5 +182,6 @@ MACHINE_START(CLPS7500, "CL-PS7500")
MAINTAINER("Philip Blundell") MAINTAINER("Philip Blundell")
BOOT_MEM(0x10000000, 0x03000000, 0xe0000000) BOOT_MEM(0x10000000, 0x03000000, 0xe0000000)
MAPIO(clps7500_map_io) MAPIO(clps7500_map_io)
INITIRQ(genarch_init_irq)
MACHINE_END MACHINE_END
#endif #endif
...@@ -48,7 +48,6 @@ extern int sys_write(int, const char *, int); ...@@ -48,7 +48,6 @@ extern int sys_write(int, const char *, int);
extern int sys_read(int, char *, int); extern int sys_read(int, char *, int);
extern int sys_lseek(int, off_t, int); extern int sys_lseek(int, off_t, int);
extern int sys_exit(int); extern int sys_exit(int);
extern int sys_wait4(int, int *, int, struct rusage *);
/* /*
* libgcc functions - functions that are used internally by the * libgcc functions - functions that are used internally by the
...@@ -77,15 +76,18 @@ extern void ret_from_exception(void); ...@@ -77,15 +76,18 @@ extern void ret_from_exception(void);
extern void fpundefinstr(void); extern void fpundefinstr(void);
extern void fp_enter(void); extern void fp_enter(void);
#define EXPORT_SYMBOL_ALIAS(sym,orig) \ #define EXPORT_SYMBOL_ALIAS(sym,orig) \
const char __kstrtab_##sym##[] __attribute__((section(".kstrtab"))) = \ const char __kstrtab_##sym##[] \
__MODULE_STRING(##sym##); \ __attribute__((section(".kstrtab"))) = \
const struct module_symbol __ksymtab_##sym __attribute__((section("__ksymtab"))) = \ __MODULE_STRING(sym); \
const struct module_symbol __ksymtab_##sym \
__attribute__((section("__ksymtab"))) = \
{ (unsigned long)&##orig, __kstrtab_##sym }; { (unsigned long)&##orig, __kstrtab_##sym };
/*
* floating point math emulator support. /*
* These symbols will never change their calling convention... * floating point math emulator support.
*/ * These symbols will never change their calling convention...
*/
EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter); EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter);
EXPORT_SYMBOL_ALIAS(fp_printk,printk); EXPORT_SYMBOL_ALIAS(fp_printk,printk);
EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig); EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig);
...@@ -95,7 +97,9 @@ EXPORT_SYMBOL(fpundefinstr); ...@@ -95,7 +97,9 @@ EXPORT_SYMBOL(fpundefinstr);
EXPORT_SYMBOL(ret_from_exception); EXPORT_SYMBOL(ret_from_exception);
#endif #endif
#ifdef CONFIG_VT
EXPORT_SYMBOL(kd_mksound); EXPORT_SYMBOL(kd_mksound);
#endif
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(dump_thread); EXPORT_SYMBOL(dump_thread);
...@@ -150,8 +154,6 @@ EXPORT_SYMBOL(__bus_to_virt); ...@@ -150,8 +154,6 @@ EXPORT_SYMBOL(__bus_to_virt);
#ifndef CONFIG_NO_PGT_CACHE #ifndef CONFIG_NO_PGT_CACHE
EXPORT_SYMBOL(quicklists); EXPORT_SYMBOL(quicklists);
#endif #endif
EXPORT_SYMBOL(__handle_bad_pmd);
EXPORT_SYMBOL(__handle_bad_pmd_kernel);
/* string / mem functions */ /* string / mem functions */
EXPORT_SYMBOL_NOVERS(strcpy); EXPORT_SYMBOL_NOVERS(strcpy);
......
/* /*
* Arthur personality * linux/arch/arm/kernel/arthur.c
*
* Copyright (C) 1998, 1999, 2000 Philip Blundell
* *
* Copyright (C) 1998, 1999, 2000 Philip Blundell * Arthur personality
*/ */
/* /*
......
...@@ -307,7 +307,8 @@ void __init pcibios_fixup_bus(struct pci_bus *bus) ...@@ -307,7 +307,8 @@ void __init pcibios_fixup_bus(struct pci_bus *bus)
* parity line correctly. * parity line correctly.
*/ */
if (dev->vendor == PCI_VENDOR_ID_INTERG && if (dev->vendor == PCI_VENDOR_ID_INTERG &&
dev->device == PCI_DEVICE_ID_INTERG_2000) (dev->device == PCI_DEVICE_ID_INTERG_2000 ||
dev->device == PCI_DEVICE_ID_INTERG_2010))
busdata->features &= ~(PCI_COMMAND_SERR | busdata->features &= ~(PCI_COMMAND_SERR |
PCI_COMMAND_PARITY); PCI_COMMAND_PARITY);
...@@ -394,6 +395,7 @@ extern struct hw_pci cats_pci; ...@@ -394,6 +395,7 @@ extern struct hw_pci cats_pci;
extern struct hw_pci netwinder_pci; extern struct hw_pci netwinder_pci;
extern struct hw_pci personal_server_pci; extern struct hw_pci personal_server_pci;
extern struct hw_pci ftv_pci; extern struct hw_pci ftv_pci;
extern struct hw_pci shark_pci;
extern struct hw_pci integrator_pci; extern struct hw_pci integrator_pci;
void __init pcibios_init(void) void __init pcibios_init(void)
...@@ -409,6 +411,12 @@ void __init pcibios_init(void) ...@@ -409,6 +411,12 @@ void __init pcibios_init(void)
break; break;
} }
#endif #endif
#ifdef CONFIG_ARCH_SHARK
if (machine_is_shark()) {
hw_pci = &shark_pci;
break;
}
#endif
#ifdef CONFIG_ARCH_CATS #ifdef CONFIG_ARCH_CATS
if (machine_is_cats()) { if (machine_is_cats()) {
hw_pci = &cats_pci; hw_pci = &cats_pci;
...@@ -427,8 +435,8 @@ void __init pcibios_init(void) ...@@ -427,8 +435,8 @@ void __init pcibios_init(void)
break; break;
} }
#endif #endif
#ifdef CONFIG_ARCH_NEXUSPCI #ifdef CONFIG_ARCH_FTVPCI
if (machine_is_nexuspci()) { if (machine_is_ftvpci()) {
hw_pci = &ftv_pci; hw_pci = &ftv_pci;
break; break;
} }
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/config.h> #include <linux/config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/hardware/dec21285.h>
.text .text
...@@ -67,8 +66,31 @@ ...@@ -67,8 +66,31 @@
tst \rd, #0x10 tst \rd, #0x10
beq 1001b beq 1001b
.endm .endm
#elif defined(CONFIG_ARCH_SHARK)
.macro addruart,rx
mov \rx, #0xe0000000
orr \rx, \rx, #0x000003f8
.endm
.macro senduart,rd,rx
strb \rd, [\rx]
.endm
.macro busyuart,rd,rx
mov \rd, #0
1001: add \rd, \rd, #1
teq \rd, #0x10000
bne 1001b
.endm
.macro waituart,rd,rx
.endm
#elif defined(CONFIG_FOOTBRIDGE) #elif defined(CONFIG_FOOTBRIDGE)
#include <asm/hardware/dec21285.h>
#ifndef CONFIG_DEBUG_DC21285_PORT #ifndef CONFIG_DEBUG_DC21285_PORT
/* For NetWinder debugging */ /* For NetWinder debugging */
.macro addruart,rx .macro addruart,rx
...@@ -120,9 +142,12 @@ ...@@ -120,9 +142,12 @@
.macro waituart,rd,rx .macro waituart,rd,rx
.endm .endm
#endif #endif
#elif defined(CONFIG_ARCH_NEXUSPCI) #elif defined(CONFIG_ARCH_FTVPCI)
.macro addruart,rx .macro addruart,rx
ldr \rx, =0xfff00000 mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled?
movne \rx, #0xe0000000
moveq \rx, #0x10000000
.endm .endm
.macro senduart,rd,rx .macro senduart,rd,rx
...@@ -131,8 +156,8 @@ ...@@ -131,8 +156,8 @@
.macro busyuart,rd,rx .macro busyuart,rd,rx
1001: ldr \rd, [\rx, #0x4] 1001: ldr \rd, [\rx, #0x4]
tst \rd, #1 << 0 tst \rd, #1 << 2
bne 1001b beq 1001b
.endm .endm
.macro waituart,rd,rx .macro waituart,rd,rx
...@@ -164,6 +189,26 @@ ...@@ -164,6 +189,26 @@
bne 1001b bne 1001b
.endm .endm
#elif defined(CONFIG_ARCH_CLPS7500)
.macro addruart,rx
mov \rx, #0xe0000000
orr \rx, \rx, #0x00010000
orr \rx, \rx, #0x00000be0
.endm
.macro senduart,rd,rx
strb \rd, [\rx]
.endm
.macro busyuart,rd,rx
.endm
.macro waituart,rd,rx
1001: ldrb \rd, [\rx, #0x14]
tst \rd, #0x20
beq 1001b
.endm
#elif defined(CONFIG_ARCH_L7200) #elif defined(CONFIG_ARCH_L7200)
.equ io_virt, IO_BASE .equ io_virt, IO_BASE
...@@ -174,12 +219,12 @@ ...@@ -174,12 +219,12 @@
tst \rx, #1 @ MMU enabled? tst \rx, #1 @ MMU enabled?
moveq \rx, #io_phys @ physical base address moveq \rx, #io_phys @ physical base address
movne \rx, #io_virt @ virtual address movne \rx, #io_virt @ virtual address
add \rx, \rx, #0x00044000 @ Ser1 add \rx, \rx, #0x00044000 @ UART1
@ add \rx, \rx, #0x00045000 @ Ser2 @ add \rx, \rx, #0x00045000 @ UART2
.endm .endm
.macro senduart,rd,rx .macro senduart,rd,rx
str \rd, [\rx, #0x0] @ UARTDR1 str \rd, [\rx, #0x0] @ UARTDR
.endm .endm
.macro waituart,rd,rx .macro waituart,rd,rx
...@@ -198,9 +243,6 @@ ...@@ -198,9 +243,6 @@
#include <asm/hardware/serial_amba.h> #include <asm/hardware/serial_amba.h>
.equ io_virt, 0xf0000000 + (0x16000000 >> 4)
.equ io_phys, 0x16000000
.macro addruart,rx .macro addruart,rx
mrc p15, 0, \rx, c1, c0 mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled? tst \rx, #1 @ MMU enabled?
...@@ -225,6 +267,41 @@ ...@@ -225,6 +267,41 @@
bne 1001b bne 1001b
.endm .endm
#elif defined(CONFIG_ARCH_CLPS711X)
#include <asm/hardware/clps7111.h>
.macro addruart,rx
mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled?
moveq \rx, #CLPS7111_PHYS_BASE
movne \rx, #CLPS7111_VIRT_BASE
#ifndef CONFIG_DEBUG_CLPS711X_UART2
add \rx, \rx, #0x0000 @ UART1
#else
add \rx, \rx, #0x1000 @ UART2
#endif
.endm
.macro senduart,rd,rx
str \rd, [\rx, #0x0480] @ UARTDR
.endm
.macro waituart,rd,rx
1001: ldr \rd, [\rx, #0x0140] @ SYSFLGx
tst \rd, #1 << 11 @ UBUSYx
bne 1001b
.endm
.macro busyuart,rd,rx
tst \rx, #0x1000 @ UART2 does not have CTS here
bne 1002f
1001: ldr \rd, [\rx, #0x0140] @ SYSFLGx
tst \rd, #1 << 8 @ CTS
bne 1001b
1002:
.endm
#else #else
#error Unknown architecture #error Unknown architecture
#endif #endif
......
This diff is collapsed.
...@@ -89,41 +89,52 @@ ...@@ -89,41 +89,52 @@
.if ioc_base_low .if ioc_base_low
orr r4, r4, #ioc_base_low orr r4, r4, #ioc_base_low
.endif .endif
ldrb \irqstat, [r4, #0x24] @ get high priority first ldrb \irqstat, [r4, #IOMD_IRQREQB] @ get high priority first
adr \base, irq_prio_h ldr \base, =irq_prio_h
teq \irqstat, #0 teq \irqstat, #0
#ifdef IOMD_BASE #ifdef IOMD_BASE
ldreqb \irqstat, [r4, #0x1f4] @ get dma ldreqb \irqstat, [r4, #IOMD_DMAREQ] @ get dma
adreq \base, irq_prio_d addeq \base, \base, #256 @ irq_prio_h table size
teqeq \irqstat, #0 teqeq \irqstat, #0
bne 2406f
#endif #endif
ldreqb \irqstat, [r4, #0x14] @ get low priority ldreqb \irqstat, [r4, #IOMD_IRQREQA] @ get low priority
adreq \base, irq_prio_l addeq \base, \base, #256 @ irq_prio_d table size
teqeq \irqstat, #0
teq \irqstat, #0 #ifdef IOMD_IRQREQC
ldrneb \irqnr, [\base, \irqstat] @ get IRQ number ldreqb \irqstat, [r4, #IOMD_IRQREQC]
addeq \base, \base, #256 @ irq_prio_l table size
teqeq \irqstat, #0
#endif
#ifdef IOMD_IRQREQD
ldreqb \irqstat, [r4, #IOMD_IRQREQD]
addeq \base, \base, #256 @ irq_prio_lc table size
teqeq \irqstat, #0
#endif
2406: ldrneb \irqnr, [\base, \irqstat] @ get IRQ number
.endm .endm
/* /*
* Interrupt table (incorporates priority) * Interrupt table (incorporates priority). Please note that we
* rely on the order of these tables (see above code).
*/ */
.macro irq_prio_table .macro irq_prio_table
irq_prio_l: .byte 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3 irq_prio_h: .byte 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
.byte 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3 .byte 12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
.byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3 .byte 14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
.byte 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3 .byte 14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
.byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
.byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 .byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
#ifdef IOMD_BASE #ifdef IOMD_BASE
irq_prio_d: .byte 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16 irq_prio_d: .byte 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
.byte 20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16 .byte 20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
...@@ -142,26 +153,64 @@ irq_prio_d: .byte 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16 ...@@ -142,26 +153,64 @@ irq_prio_d: .byte 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
.byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
.byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16 .byte 21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
#endif #endif
irq_prio_h: .byte 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10 irq_prio_l: .byte 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
.byte 12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10 .byte 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
.byte 14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10 .byte 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
.byte 14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10 .byte 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
.byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
.byte 13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10 .byte 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
#ifdef IOMD_IRQREQC
irq_prio_lc: .byte 24,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
.byte 28,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
.byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
.byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
.byte 30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
.byte 30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
.byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
.byte 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
.byte 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
#endif
#ifdef IOMD_IRQREQD
irq_prio_ld: .byte 40,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
.byte 44,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
.byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
.byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
.byte 46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
.byte 46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
.byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
.byte 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
.byte 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
#endif
.endm .endm
#elif defined(CONFIG_ARCH_EBSA110) #elif defined(CONFIG_ARCH_EBSA110)
#define IRQ_STAT 0xff000000 /* read */
.macro disable_fiq .macro disable_fiq
.endm .endm
...@@ -457,7 +506,9 @@ ENTRY(soft_irq_mask) ...@@ -457,7 +506,9 @@ ENTRY(soft_irq_mask)
.macro irq_prio_table .macro irq_prio_table
.endm .endm
#elif defined(CONFIG_ARCH_P720T) #elif defined(CONFIG_ARCH_CLPS711X)
#include <asm/hardware/clps7111.h>
.macro disable_fiq .macro disable_fiq
.endm .endm
......
...@@ -35,9 +35,7 @@ ...@@ -35,9 +35,7 @@
.align 5 .align 5
fast_syscall_return: fast_syscall_return:
str r0, [sp, #S_R0 + S_OFF] @ returned r0 str r0, [sp, #S_R0+S_OFF]! @ returned r0
slow_syscall_return:
add sp, sp, #S_OFF
ret_from_sys_call: @ external entry ret_from_sys_call: @ external entry
get_softirq r0 get_softirq r0
get_current_task r5 get_current_task r5
...@@ -52,6 +50,7 @@ ret_with_reschedule: @ external entry (r5 must be set) (__irq_usr) ...@@ -52,6 +50,7 @@ ret_with_reschedule: @ external entry (r5 must be set) (__irq_usr)
bne ret_reschedule bne ret_reschedule
teq r1, #0 @ check for signals teq r1, #0 @ check for signals
blne ret_signal blne ret_signal
ret_from_all: restore_user_regs @ internal ret_from_all: restore_user_regs @ internal
ret_signal: mov r1, sp @ internal ret_signal: mov r1, sp @ internal
...@@ -132,7 +131,8 @@ vector_swi: save_user_regs ...@@ -132,7 +131,8 @@ vector_swi: save_user_regs
str ip, [sp, #S_IP + S_OFF] @ trace exit [IP = 1] str ip, [sp, #S_IP + S_OFF] @ trace exit [IP = 1]
bl SYMBOL_NAME(syscall_trace) bl SYMBOL_NAME(syscall_trace)
str tip, [sp, #S_IP + S_OFF] str tip, [sp, #S_IP + S_OFF]
b slow_syscall_return add sp, sp, #S_OFF
b ret_from_sys_call
2: add r1, sp, #S_OFF 2: add r1, sp, #S_OFF
tst scno, #0x00f00000 @ is it a Unix SWI? tst scno, #0x00f00000 @ is it a Unix SWI?
...@@ -142,8 +142,9 @@ vector_swi: save_user_regs ...@@ -142,8 +142,9 @@ vector_swi: save_user_regs
b SYMBOL_NAME(sys_ni_syscall) @ not private func b SYMBOL_NAME(sys_ni_syscall) @ not private func
3: eor r0, scno, #OS_NUMBER <<20 @ Put OS number back 3: eor r0, scno, #OS_NUMBER <<20 @ Put OS number back
adrsvc al, lr, slow_syscall_return bl SYMBOL_NAME(deferred)
b SYMBOL_NAME(deferred) add sp, sp, #S_OFF
b ret_from_sys_call
.align 5 .align 5
.type __irq_stat, #object .type __irq_stat, #object
......
This diff is collapsed.
...@@ -82,9 +82,9 @@ detect_proc_type: ...@@ -82,9 +82,9 @@ detect_proc_type:
mov r1, #0 mov r1, #0
str r0, [r1, #4] str r0, [r1, #4]
ldr r0, arm2_id ldr r0, arm2_id
swp r2, r2, [r1] @ check for swp (ARM2 can't) swp r2, r2, [r1] @ check for swp (ARM2 cant)
ldr r0, arm250_id ldr r0, arm250_id
mrc 15, 0, r3, c0, c0 @ check for CP#15 (ARM250 can't) mrc 15, 0, r3, c0, c0 @ check for CP#15 (ARM250 cant)
mov r0, r3 mov r0, r3
continue: mov r2, #0xeb000000 @ Make undef vector loop continue: mov r2, #0xeb000000 @ Make undef vector loop
sub r2, r2, #2 sub r2, r2, #2
......
This diff is collapsed.
...@@ -47,4 +47,3 @@ void _memset_io(unsigned long dst, int c, size_t count) ...@@ -47,4 +47,3 @@ void _memset_io(unsigned long dst, int c, size_t count)
EXPORT_SYMBOL(_memcpy_fromio); EXPORT_SYMBOL(_memcpy_fromio);
EXPORT_SYMBOL(_memcpy_toio); EXPORT_SYMBOL(_memcpy_toio);
EXPORT_SYMBOL(_memset_io); EXPORT_SYMBOL(_memset_io);
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment