summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Molton <spyro@f2s.com>2003-07-06 23:29:28 -0700
committerSteve French <cifs.adm@hostme.bitkeeper.com>2003-07-06 23:29:28 -0700
commitbd824b9fb179ceba690d683a79eeb6f0f0ff5f06 (patch)
tree013e3f54ed1f966b2ff0d40c24503085db9b6d5f
parentd62f5562b1a1ba6a081700f887876b3e2aaba1de (diff)
[PATCH] ARM26 architecture update
-rw-r--r--MAINTAINERS15
-rw-r--r--arch/arm26/Config.help387
-rw-r--r--arch/arm26/Kconfig156
-rw-r--r--arch/arm26/config.in151
-rw-r--r--arch/arm26/kernel/Makefile2
-rw-r--r--arch/arm26/kernel/arch.c30
-rw-r--r--arch/arm26/kernel/asm-offsets.c2
-rw-r--r--arch/arm26/kernel/compat.c2
-rw-r--r--arch/arm26/kernel/dma.c2
-rw-r--r--arch/arm26/kernel/ecard.c20
-rw-r--r--arch/arm26/kernel/irq.c9
-rw-r--r--arch/arm26/kernel/process.c4
-rw-r--r--arch/arm26/kernel/setup.c73
-rw-r--r--arch/arm26/kernel/traps.c7
-rw-r--r--arch/arm26/lib/Makefile15
-rw-r--r--arch/arm26/machine/Makefile2
-rw-r--r--arch/arm26/machine/arch.c36
-rw-r--r--arch/arm26/machine/irq.c4
-rw-r--r--arch/arm26/mm/init.c2
-rw-r--r--arch/arm26/mm/mm-memc.c2
-rw-r--r--include/asm-arm26/arch.h62
-rw-r--r--include/asm-arm26/bug.h11
-rw-r--r--include/asm-arm26/bugs.h2
-rw-r--r--include/asm-arm26/ecard.h3
-rw-r--r--include/asm-arm26/mach-types.h1
-rw-r--r--include/asm-arm26/pgalloc.h4
-rw-r--r--include/asm-arm26/pgtable.h2
-rw-r--r--include/asm-arm26/statfs.h21
-rw-r--r--include/asm-arm26/thread_info.h2
29 files changed, 105 insertions, 924 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index c4bb8d3ae788..6590dd21b509 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -245,6 +245,21 @@ M: jschlst@samba.org
L: linux-atalk@lists.netspace.org
S: Maintained
+ARM26 ARCHITECTURE
+P: Ian Molton
+M: spyro@f2s.com
+S: Maintained
+
+ARM26/ARCHIMEDES
+P: Ian Molton
+M: spyro@f2s.com
+S: Maintained
+
+ARM26/A5000
+P: John Appleby
+M: john@dnsworld.co.uk
+S: Maintained
+
ARM MFM AND FLOPPY DRIVERS
P: Dave Gilbert
M: linux@treblig.org
diff --git a/arch/arm26/Config.help b/arch/arm26/Config.help
deleted file mode 100644
index a2a7f13d4eff..000000000000
--- a/arch/arm26/Config.help
+++ /dev/null
@@ -1,387 +0,0 @@
-CONFIG_ARM
- The ARM series is a line of low-power-consumption RISC chip designs
- licensed by ARM ltd and targeted at embedded applications.
-
-CONFIG_IDE
- If you say Y here, your kernel will be able to manage low cost mass
- storage units such as ATA/(E)IDE and ATAPI units. The most common
- cases are IDE hard drives and ATAPI CD-ROM drives.
-
- If your system is pure SCSI and doesn't use these interfaces, you
- can say N here.
-
- Integrated Disk Electronics (IDE aka ATA-1) is a connecting standard
- for mass storage units such as hard disks. It was designed by
- Western Digital and Compaq Computer in 1984. It was then named
- ST506. Quite a number of disks use the IDE interface.
-
- AT Attachment (ATA) is the superset of the IDE specifications.
- ST506 was also called ATA-1.
-
- Fast-IDE is ATA-2 (also named Fast ATA), Enhanced IDE (EIDE) is
- ATA-3. It provides support for larger disks (up to 8.4GB by means of
- the LBA standard), more disks (4 instead of 2) and for other mass
- storage units such as tapes and cdrom. UDMA/33 (aka UltraDMA/33) is
- ATA-4 and provides faster (and more CPU friendly) transfer modes
- than previous PIO (Programmed processor Input/Output) from previous
- ATA/IDE standards by means of fast DMA controllers.
-
- ATA Packet Interface (ATAPI) is a protocol used by EIDE tape and
- CD-ROM drives, similar in many respects to the SCSI protocol.
-
- SMART IDE (Self Monitoring, Analysis and Reporting Technology) was
- designed in order to prevent data corruption and disk crash by
- detecting pre hardware failure conditions (heat, access time, and
- the like...). Disks built since June 1995 may follow this standard.
- The kernel itself don't manage this; however there are quite a
- number of user programs such as smart that can query the status of
- SMART parameters disk.
-
- If you want to compile this driver as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want),
- say M here and read <file:Documentation/modules.txt>. The module
- will be called ide.o.
-
- For further information, please read <file:Documentation/ide.txt>.
-
- If unsure, say Y.
-
-CONFIG_ISA
- Find out whether you have ISA slots on your motherboard. ISA is the
- name of a bus system, i.e. the way the CPU talks to the other stuff
- inside your box. Other bus systems are PCI, EISA, MicroChannel
- (MCA) or VESA. ISA is an older system, now being displaced by PCI;
- newer boards don't support it. If you have ISA, say Y, otherwise N.
-
-CONFIG_PREEMPT
- This option reduces the latency of the kernel when reacting to
- real-time or interactive events by allowing a low priority process to
- be preempted even if it is in kernel mode executing a system call.
- This allows applications to run more reliably even when the system is
- under load.
-
- Say Y here if you are building a kernel for a desktop, embedded
- or real-time system. Say N if you are unsure.
-
-CONFIG_MCA
- MicroChannel Architecture is found in some IBM PS/2 machines and
- laptops. It is a bus system similar to PCI or ISA. See
- <file:Documentation/mca.txt> (and especially the web page given
- there) before attempting to build an MCA bus kernel.
-
-CONFIG_EISA
- The Extended Industry Standard Architecture (EISA) bus was
- developed as an open alternative to the IBM MicroChannel bus.
-
- The EISA bus provided some of the features of the IBM MicroChannel
- bus while maintaining backward compatibility with cards made for
- the older ISA bus. The EISA bus saw limited use between 1988 and
- 1995 when it was made obsolete by the PCI bus.
-
- Say Y here if you are building a kernel for an EISA-based machine.
-
- Otherwise, say N.
-
-CONFIG_HOTPLUG
- Say Y here if you want to plug devices into your computer while
- the system is running, and be able to use them quickly. In many
- cases, the devices can likewise be unplugged at any time too.
-
- One well known example of this is PCMCIA- or PC-cards, credit-card
- size devices such as network cards, modems or hard drives which are
- plugged into slots found on all modern laptop computers. Another
- example, used on modern desktops as well as laptops, is USB.
-
- Enable HOTPLUG and KMOD, and build a modular kernel. Get agent
- software (at <http://linux-hotplug.sourceforge.net/>) and install it.
- Then your kernel will automatically call out to a user mode "policy
- agent" (/sbin/hotplug) to load modules and set up software needed
- to use devices as you hotplug them.
-
-CONFIG_KCORE_ELF
- If you enabled support for /proc file system then the file
- /proc/kcore will contain the kernel core image. This can be used
- in gdb:
-
- $ cd /usr/src/linux ; gdb vmlinux /proc/kcore
-
- You have two choices here: ELF and A.OUT. Selecting ELF will make
- /proc/kcore appear in ELF core format as defined by the Executable
- and Linking Format specification. Selecting A.OUT will choose the
- old "a.out" format which may be necessary for some old versions
- of binutils or on some architectures.
-
- This is especially useful if you have compiled the kernel with the
- "-g" option to preserve debugging information. It is mainly used
- for examining kernel data structures on the live kernel so if you
- don't understand what this means or are not a kernel hacker, just
- leave it at its default value ELF.
-
-CONFIG_KCORE_AOUT
- Not necessary unless you're using a very out-of-date binutils
- version. You probably want KCORE_ELF.
-
-CONFIG_BINFMT_ELF
- ELF (Executable and Linkable Format) is a format for libraries and
- executables used across different architectures and operating
- systems. Saying Y here will enable your kernel to run ELF binaries
- and enlarge it by about 13 KB. ELF support under Linux has now all
- but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
- because it is portable (this does *not* mean that you will be able
- to run executables from different architectures or operating systems
- however) and makes building run-time libraries very easy. Many new
- executables are distributed solely in ELF format. You definitely
- want to say Y here.
-
- Information about ELF is contained in the ELF HOWTO available from
- <http://www.linuxdoc.org/docs.html#howto>.
-
- If you find that after upgrading from Linux kernel 1.2 and saying Y
- here, you still can't run any ELF binaries (they just crash), then
- you'll have to install the newest ELF runtime libraries, including
- ld.so (check the file <file:Documentation/Changes> for location and
- latest version).
-
- If you want to compile this as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want),
- say M here and read <file:Documentation/modules.txt>. The module
- will be called binfmt_elf.o. Saying M or N here is dangerous because
- some crucial programs on your system might be in ELF format.
-
-CONFIG_BINFMT_AOUT
- A.out (Assembler.OUTput) is a set of formats for libraries and
- executables used in the earliest versions of UNIX. Linux used the
- a.out formats QMAGIC and ZMAGIC until they were replaced with the
- ELF format.
-
- As more and more programs are converted to ELF, the use for a.out
- will gradually diminish. If you disable this option it will reduce
- your kernel by one page. This is not much and by itself does not
- warrant removing support. However its removal is a good idea if you
- wish to ensure that absolutely none of your programs will use this
- older executable format. If you don't know what to answer at this
- point then answer Y. If someone told you "You need a kernel with
- QMAGIC support" then you'll have to say Y here. You may answer M to
- compile a.out support as a module and later load the module when you
- want to use a program or library in a.out format. The module will be
- called binfmt_aout.o. Saying M or N here is dangerous though,
- because some crucial programs on your system might still be in A.OUT
- format.
-
-CONFIG_BINFMT_MISC
- If you say Y here, it will be possible to plug wrapper-driven binary
- formats into the kernel. You will like this especially when you use
- programs that need an interpreter to run like Java, Python or
- Emacs-Lisp. It's also useful if you often run DOS executables under
- the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
- <http://www.linuxdoc.org/docs.html#howto>). Once you have
- registered such a binary class with the kernel, you can start one of
- those programs simply by typing in its name at a shell prompt; Linux
- will automatically feed it to the correct interpreter.
-
- You can do other nice things, too. Read the file
- <file:Documentation/binfmt_misc.txt> to learn how to use this
- feature, and <file:Documentation/java.txt> for information about how
- to include Java support.
-
- You must say Y to "/proc file system support" (CONFIG_PROC_FS) to
- use this part of the kernel.
-
- You may say M here for module support and later load the module when
- you have use for it; the module is called binfmt_misc.o. If you
- don't know what to answer at this point, say Y.
-
-CONFIG_SCSI
- If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or
- any other SCSI device under Linux, say Y and make sure that you know
- the name of your SCSI host adapter (the card inside your computer
- that "speaks" the SCSI protocol, also called SCSI controller),
- because you will be asked for it.
-
- You also need to say Y here if you want support for the parallel
- port version of the 100 MB IOMEGA ZIP drive.
-
- This driver is also available as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want).
- The module will be called scsi_mod.o. If you want to compile it as
- a module, say M here and read <file:Documentation/modules.txt> and
- <file:Documentation/scsi.txt>. However, do not compile this as a
- module if your root file system (the one containing the directory /)
- is located on a SCSI device.
-
-CONFIG_NETDEVICES
- You can say N here if you don't intend to connect your Linux box to
- any other computer at all or if all your connections will be over a
- telephone line with a modem either via UUCP (UUCP is a protocol to
- forward mail and news between unix hosts over telephone lines; read
- the UUCP-HOWTO, available from
- <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell
- account or a BBS, even using term (term is a program which gives you
- almost full Internet connectivity if you have a regular dial up
- shell account on some Internet connected Unix computer. Read
- <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>).
-
- You'll have to say Y if your computer contains a network card that
- you want to use under Linux (make sure you know its name because you
- will be asked for it and read the Ethernet-HOWTO (especially if you
- plan to use more than one network card under Linux)) or if you want
- to use SLIP (Serial Line Internet Protocol is the protocol used to
- send Internet traffic over telephone lines or null modem cables) or
- CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better
- and newer replacement for SLIP) or PLIP (Parallel Line Internet
- Protocol is mainly used to create a mini network by connecting the
- parallel ports of two local machines) or AX.25/KISS (protocol for
- sending Internet traffic over amateur radio links).
-
- Make sure to read the NET-3-HOWTO. Eventually, you will have to read
- Olaf Kirch's excellent and free book "Network Administrator's
- Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If
- unsure, say Y.
-
-CONFIG_MAGIC_SYSRQ
- If you say Y here, you will have some control over the system even
- if the system crashes for example during kernel debugging (e.g., you
- will be able to flush the buffer cache to disk, reboot the system
- immediately or dump some status information). This is accomplished
- by pressing various keys while holding SysRq (Alt+PrintScreen). It
- also works on a serial console (on PC hardware at least), if you
- send a BREAK and then within 5 seconds a command keypress. The
- keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
- unless you really know what this hack does.
-
-CONFIG_ARCH_ARCA5K
- This selects support for 'ARM26' CPUs (ARM 2 and 3)
-
-CONFIG_ARCH_A5K
- Say Y here to to support the Acorn A5000. Linux can support the
- internal IDE disk and CD-ROM interface, serial and parallel port,
- and the floppy drive. Note that on some A5000s the floppy is
- plugged into the wrong socket on the motherboard.
-
-CONFIG_ARCH_ARC
- The Acorn Archimedes was an personal computer based on an 8MHz ARM2
- processor, released in 1987. It supported 512K of RAM and 2 800K
- floppy disks. Picture and more detailed specifications at
- <http://www.computingmuseum.com/museum/archi.htm>.
-
-CONFIG_PAGESIZE_16
- Say Y here if your Archimedes or A5000 system has only 2MB of
- memory, otherwise say N. The resulting kernel will not run on a
- machine with 4MB of memory.
-
-CONFIG_FPE_NWFPE
- Say Y to include the NWFPE floating point emulator in the kernel.
- This is necessary to run most binaries. Linux does not currently
- support floating point hardware so you need to say Y here even if
- your machine has an FPA or floating point co-processor podule.
-
- It is also possible to say M to build the emulator as a module
- (nwfpe.o) or indeed to leave it out altogether. However, unless you
- know what you are doing this can easily render your machine
- unbootable. Saying Y is the safe option.
-
- You may say N here if you are going to load the Acorn FPEmulator
- early in the bootup.
-
-CONFIG_FPE_FASTFPE
- Say Y here to include the FAST floating point emulator in the kernel.
- This is an experimental much faster emulator which now also has full
- precision for the mantissa. It does not support any exceptions.
- It is very simple, and approximately 3-6 times faster than NWFPE.
-
- It should be sufficient for most programs. It may be not suitable
- for scientific calculations, but you have to check this for yourself.
- If you do not feel you need a faster FP emulation you should better
- choose NWFPE.
-
- It is also possible to say M to build the emulator as a module
- (fastfpe.o). But keep in mind that you should only load the FP
- emulator early in the bootup. You should never change from NWFPE to
- FASTFPE or vice versa in an active system!
-
-CONFIG_DEBUG_ERRORS
- This option controls verbose debugging information which can be
- printed when the kernel detects an internal error. This debugging
- information is useful to kernel hackers when tracking down problems,
- but mostly meaningless to other people. It's safe to say Y unless
- you are concerned with the code size or don't want to see these
- messages.
-
-CONFIG_NO_FRAME_POINTER
- If you say Y here, the resulting kernel will be slightly smaller and
- faster. However, when a problem occurs with the kernel, the
- information that is reported is severely limited. Most people
- should say N here.
-
-CONFIG_DEBUG_USER
- When a user program crashes due to an exception, the kernel can
- print a brief message explaining what the problem was. This is
- sometimes helpful for debugging but serves no purpose on a
- production system. Most people should say N here.
-
-CONFIG_DEBUG_INFO
- Say Y here to include source-level debugging information in the
- `vmlinux' binary image. This is handy if you want to use gdb or
- addr2line to debug the kernel. It has no impact on the in-memory
- footprint of the running kernel but it can increase the amount of
- time and disk space needed for compilation of the kernel. If in
- doubt say N.
-
-CONFIG_DEBUG_LL
- Say Y here to include definitions of printascii, printchar, printhex
- in the kernel. This is helpful if you are debugging code that
- executes before the console is initialized.
-
-CONFIG_NO_PGT_CACHE
- Normally the kernel maintains a `quicklist' of preallocated
- pagetable structures in order to increase performance. On machines
- with very few pages this may however be a loss. Say Y here to
- disable the pgtable cache.
-
-CONFIG_ARTHUR
- Say Y here to include the kernel code necessary if you want to run
- Acorn RISC OS/Arthur binaries under Linux. This code is still very
- experimental; if this sounds frightening, say N and sleep in peace.
- You can also say M here to compile this support as a module (which
- will be called arthur.o).
-
-CONFIG_CMDLINE
- On some architectures (EBSA110 and CATS), there is currently no way
- for the boot loader to pass arguments to the kernel. For these
- architectures, you should supply some command-line options at build
- time by entering them here. As a minimum, you should specify the
- memory size and the root device (e.g., mem=64M root=/dev/nfs).
-
-CONFIG_DEBUG_KERNEL
- Say Y here if you are developing drivers or trying to debug and
- identify kernel problems.
-
-CONFIG_DEBUG_SLAB
- Say Y here to have the kernel do limited verification on memory
- allocation as well as poisoning memory on free to catch use of freed
- memory.
-
-CONFIG_DEBUG_SPINLOCK
- Say Y here and build SMP to catch missing spinlock initialization
- and certain other kinds of spinlock errors commonly made. This is
- best used in conjunction with the NMI watchdog so that spinlock
- deadlocks are also debuggable.
-
-CONFIG_DEBUG_BUGVERBOSE
- Say Y here to make BUG() panics output the file name and line number
- of the BUG call as well as the EIP and oops trace. This aids
- debugging but costs about 70-100K of memory.
-
-CONFIG_ZBOOT_ROM
- Say Y here if you intend to execute your compressed kernel image (zImage)
- directly from ROM or flash. If unsure, say N.
-
-CONFIG_ZBOOT_ROM_TEXT
- The base address for zImage. Unless you have special requirements, you
- should not change this value.
-
-CONFIG_ZBOOT_ROM_BSS
- The base address of 64KiB of read/write memory, which must be available
- while the decompressor is running. Unless you have special requirements,
- you should not change this value.
-
diff --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig
index b62382271dad..31d2e5de2c32 100644
--- a/arch/arm26/Kconfig
+++ b/arch/arm26/Kconfig
@@ -8,15 +8,8 @@ mainmenu "Linux Kernel Configuration"
config ARM
bool
default y
- help
- The ARM series is a line of low-power-consumption RISC chip designs
- licensed by ARM ltd and targeted at embedded applications and
- handhelds such as the Compaq IPAQ. ARM-based PCs are no longer
- manufactured, but legacy ARM-based PC hardware remains popular in
- Europe. There is an ARM Linux project with a web page at
- <http://www.arm.linux.org.uk/>.
-
-config ARCH_ARCA5K
+
+config ARM26
bool
default y
@@ -67,25 +60,25 @@ comment "Archimedes/A5000 Implementations (select only ONE)"
config ARCH_ARC
bool "Archimedes"
- depends on ARCH_ARCA5K
help
- The Acorn Archimedes was an personal computer based on an 8K ARM2
- processor, released in 1987. It supported 512K of RAM and 2 800K
- floppy disks. Picture and more detailed specifications at
- <http://www.computingmuseum.com/museum/archi.htm>.
+ Say Y to support the Acorn Archimedes.
+
+ The Acorn Archimedes was an personal computer based on an 8MHz ARM2
+ processor, released in 1987. It supported up to 16MB of RAM in
+ later models and floppy, harddisc, ethernet etc.
config ARCH_A5K
bool "A5000"
- depends on ARCH_ARCA5K
help
- Say Y here to to support the Acorn A5000. Linux can support the
+ Say Y here to to support the Acorn A5000.
+
+ Linux can support the
internal IDE disk and CD-ROM interface, serial and parallel port,
and the floppy drive. Note that on some A5000s the floppy is
plugged into the wrong socket on the motherboard.
config PAGESIZE_16
- bool "2MB physical memory"
- depends on ARCH_ARCA5K
+ bool "2MB physical memory (broken)"
help
Say Y here if your Archimedes or A5000 system has only 2MB of
memory, otherwise say N. The resulting kernel will not run on a
@@ -186,81 +179,7 @@ config KCORE_AOUT
endchoice
-config BINFMT_AOUT
- tristate "Kernel support for a.out binaries"
- ---help---
- A.out (Assembler.OUTput) is a set of formats for libraries and
- executables used in the earliest versions of UNIX. Linux used the
- a.out formats QMAGIC and ZMAGIC until they were replaced with the
- ELF format.
-
- As more and more programs are converted to ELF, the use for a.out
- will gradually diminish. If you disable this option it will reduce
- your kernel by one page. This is not much and by itself does not
- warrant removing support. However its removal is a good idea if you
- wish to ensure that absolutely none of your programs will use this
- older executable format. If you don't know what to answer at this
- point then answer Y. If someone told you "You need a kernel with
- QMAGIC support" then you'll have to say Y here. You may answer M to
- compile a.out support as a module and later load the module when you
- want to use a program or library in a.out format. The module will be
- called binfmt_aout. Saying M or N here is dangerous though,
- because some crucial programs on your system might still be in A.OUT
- format.
-
-config BINFMT_ELF
- tristate "Kernel support for ELF binaries"
- ---help---
- ELF (Executable and Linkable Format) is a format for libraries and
- executables used across different architectures and operating
- systems. Saying Y here will enable your kernel to run ELF binaries
- and enlarge it by about 13 KB. ELF support under Linux has now all
- but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
- because it is portable (this does *not* mean that you will be able
- to run executables from different architectures or operating systems
- however) and makes building run-time libraries very easy. Many new
- executables are distributed solely in ELF format. You definitely
- want to say Y here.
-
- Information about ELF is contained in the ELF HOWTO available from
- <http://www.linuxdoc.org/docs.html#howto>.
-
- If you find that after upgrading from Linux kernel 1.2 and saying Y
- here, you still can't run any ELF binaries (they just crash), then
- you'll have to install the newest ELF runtime libraries, including
- ld.so (check the file <file:Documentation/Changes> for location and
- latest version).
-
- If you want to compile this as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want),
- say M here and read <file:Documentation/modules.txt>. The module
- will be called binfmt_elf. Saying M or N here is dangerous because
- some crucial programs on your system might be in ELF format.
-
-config BINFMT_MISC
- tristate "Kernel support for MISC binaries"
- ---help---
- If you say Y here, it will be possible to plug wrapper-driven binary
- formats into the kernel. You will like this especially when you use
- programs that need an interpreter to run like Java, Python or
- Emacs-Lisp. It's also useful if you often run DOS executables under
- the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
- <http://www.linuxdoc.org/docs.html#howto>). Once you have
- registered such a binary class with the kernel, you can start one of
- those programs simply by typing in its name at a shell prompt; Linux
- will automatically feed it to the correct interpreter.
-
- You can do other nice things, too. Read the file
- <file:Documentation/binfmt_misc.txt> to learn how to use this
- feature, and <file:Documentation/java.txt> for information about how
- to include Java support.
-
- You must say Y to "/proc file system support" (CONFIG_PROC_FS) to
- use this part of the kernel.
-
- You may say M here for module support and later load the module when
- you have use for it; the module is called binfmt_misc. If you
- don't know what to answer at this point, say Y.
+source "fs/Kconfig.binfmt"
config PREEMPT
bool "Preemptible Kernel (EXPERIMENTAL)"
@@ -311,59 +230,8 @@ source "net/Kconfig"
source "net/irda/Kconfig"
-menu "ATA/ATAPI/MFM/RLL support"
-
-config IDE
- tristate "ATA/ATAPI/MFM/RLL support"
- ---help---
- If you say Y here, your kernel will be able to manage low cost mass
- storage units such as ATA/(E)IDE and ATAPI units. The most common
- cases are IDE hard drives and ATAPI CD-ROM drives.
-
- If your system is pure SCSI and doesn't use these interfaces, you
- can say N here.
-
- Integrated Disk Electronics (IDE aka ATA-1) is a connecting standard
- for mass storage units such as hard disks. It was designed by
- Western Digital and Compaq Computer in 1984. It was then named
- ST506. Quite a number of disks use the IDE interface.
-
- AT Attachment (ATA) is the superset of the IDE specifications.
- ST506 was also called ATA-1.
-
- Fast-IDE is ATA-2 (also named Fast ATA), Enhanced IDE (EIDE) is
- ATA-3. It provides support for larger disks (up to 8.4GB by means of
- the LBA standard), more disks (4 instead of 2) and for other mass
- storage units such as tapes and cdrom. UDMA/33 (aka UltraDMA/33) is
- ATA-4 and provides faster (and more CPU friendly) transfer modes
- than previous PIO (Programmed processor Input/Output) from previous
- ATA/IDE standards by means of fast DMA controllers.
-
- ATA Packet Interface (ATAPI) is a protocol used by EIDE tape and
- CD-ROM drives, similar in many respects to the SCSI protocol.
-
- SMART IDE (Self Monitoring, Analysis and Reporting Technology) was
- designed in order to prevent data corruption and disk crash by
- detecting pre hardware failure conditions (heat, access time, and
- the like...). Disks built since June 1995 may follow this standard.
- The kernel itself don't manage this; however there are quite a
- number of user programs such as smart that can query the status of
- SMART parameters disk.
-
- If you want to compile this driver as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want),
- say M here and read <file:Documentation/modules.txt>. The module
- will be called ide.
-
- For further information, please read <file:Documentation/ide.txt>.
-
- If unsure, say Y.
-
source "drivers/ide/Kconfig"
-endmenu
-
-
source "drivers/scsi/Kconfig"
source "drivers/isdn/Kconfig"
diff --git a/arch/arm26/config.in b/arch/arm26/config.in
deleted file mode 100644
index 006a435d7591..000000000000
--- a/arch/arm26/config.in
+++ /dev/null
@@ -1,151 +0,0 @@
-#
-# For a description of the syntax of this configuration file,
-# see Documentation/kbuild/config-language.txt.
-#
-mainmenu_name "Linux Kernel Configuration"
-
-define_bool CONFIG_ARM y
-define_bool CONFIG_EISA n
-define_bool CONFIG_SBUS n
-define_bool CONFIG_MCA n
-define_bool CONFIG_UID16 y
-define_bool CONFIG_RWSEM_GENERIC_SPINLOCK y
-define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM n
-define_bool CONFIG_GENERIC_BUST_SPINLOCK n
-define_bool CONFIG_GENERIC_ISA_DMA n
-
-source init/Config.in
-
-mainmenu_option next_comment
-comment 'System Type'
-
-define_bool CONFIG_ARCH_ARCA5K
-bool ' Archimedes' CONFIG_ARCH_ARC
-bool ' A5000' CONFIG_ARCH_A5K
-
-# Definitions to make life easier
-define_bool CONFIG_ARCH_ACORN y
-define_bool CONFIG_CPU_32 n
-define_bool CONFIG_CPU_26 y
-bool '2MB physical memory' CONFIG_PAGESIZE_16
-
-endmenu
-
-mainmenu_option next_comment
-comment 'General setup'
-
-define_bool CONFIG_FIQ y
-
-# Compressed boot loader in ROM. Yes, we really want to ask about
-# TEXT and BSS so we preserve their values in the config files.
-bool 'Compressed boot loader in ROM/flash' CONFIG_ZBOOT_ROM
-hex 'Compressed ROM boot loader base address' CONFIG_ZBOOT_ROM_TEXT 0
-hex 'Compressed ROM boot loader BSS address' CONFIG_ZBOOT_ROM_BSS 0
-
-comment 'At least one math emulation must be selected'
-define_bool CONFIG_FPE_NWFPE y
-choice 'Kernel core (/proc/kcore) format' \
- "ELF CONFIG_KCORE_ELF \
- A.OUT CONFIG_KCORE_AOUT" ELF
-tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
-tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
-tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
-string 'Default kernel command string' CONFIG_CMDLINE ""
-
-define_bool CONFIG_ALIGNMENT_TRAP n
-endmenu
-
-source drivers/parport/Config.in
-source drivers/pnp/Config.in
-source drivers/block/Config.in
-source drivers/md/Config.in
-source drivers/acorn/block/Config.in
-
-if [ "$CONFIG_NET" = "y" ]; then
- source net/Config.in
-
- mainmenu_option next_comment
- comment 'Network device support'
-
- bool 'Network device support' CONFIG_NETDEVICES
- if [ "$CONFIG_NETDEVICES" = "y" ]; then
- source drivers/net/Config.in
- fi
- endmenu
-fi
-
-mainmenu_option next_comment
-comment 'ATA/ATAPI/MFM/RLL support'
-
-tristate 'ATA/ATAPI/MFM/RLL support' CONFIG_IDE
-
-if [ "$CONFIG_IDE" != "n" ]; then
- source drivers/ide/Config.in
-else
- define_bool CONFIG_BLK_DEV_HD n
-fi
-endmenu
-
-mainmenu_option next_comment
-comment 'SCSI support'
-
-tristate 'SCSI support' CONFIG_SCSI
-endmenu
-
-source drivers/isdn/Config.in
-
-#
-# input before char - char/joystick depends on it. As does USB.
-#
-source drivers/input/Config.in
-
-source drivers/char/Config.in
-if [ "$CONFIG_BUSMOUSE" = "y" ]; then
- define_bool CONFIG_KBDMOUSE y
-fi
-
-source drivers/media/Config.in
-
-source fs/Config.in
-
-if [ "$CONFIG_VT" = "y" ]; then
- mainmenu_option next_comment
- comment 'Console drivers'
- source drivers/video/Config.in
- endmenu
-fi
-
-mainmenu_option next_comment
-comment 'Sound'
-
-tristate 'Sound card support' CONFIG_SOUND
-if [ "$CONFIG_SOUND" != "n" ]; then
- source sound/Config.in
-fi
-endmenu
-
-source drivers/misc/Config.in
-source drivers/usb/Config.in
-
-mainmenu_option next_comment
-comment 'Kernel hacking'
-
-# Always compile kernel with framepointer (until 2.4 real comes out)
-# Bug reports aren't much use without this.
-bool 'Compile kernel without frame pointer' CONFIG_NO_FRAME_POINTER
-bool 'Verbose user fault messages' CONFIG_DEBUG_USER
-bool 'Include debugging information in kernel binary' CONFIG_DEBUG_INFO
-
-bool 'Kernel debugging' CONFIG_DEBUG_KERNEL
-dep_bool ' Debug memory allocations' CONFIG_DEBUG_SLAB $CONFIG_DEBUG_KERNEL
-dep_bool ' Magic SysRq key' CONFIG_MAGIC_SYSRQ $CONFIG_DEBUG_KERNEL
-dep_bool ' Spinlock debugging' CONFIG_DEBUG_SPINLOCK $CONFIG_DEBUG_KERNEL
-dep_bool ' Wait queue debugging' CONFIG_DEBUG_WAITQ $CONFIG_DEBUG_KERNEL
-dep_bool ' Verbose BUG() reporting (adds 70K)' CONFIG_DEBUG_BUGVERBOSE $CONFIG_DEBUG_KERNEL
-dep_bool ' Verbose kernel error messages' CONFIG_DEBUG_ERRORS $CONFIG_DEBUG_KERNEL
-# These options are only for real kernel hackers who want to get their hands dirty.
-dep_bool ' Kernel low-level debugging functions' CONFIG_DEBUG_LL $CONFIG_DEBUG_KERNEL
-endmenu
-
-source security/Config.in
-source lib/Config.in
diff --git a/arch/arm26/kernel/Makefile b/arch/arm26/kernel/Makefile
index 01b44b589dc8..59a75ea9a8dd 100644
--- a/arch/arm26/kernel/Makefile
+++ b/arch/arm26/kernel/Makefile
@@ -6,7 +6,7 @@ ENTRY_OBJ = entry.o
# Object file lists.
-obj-y := arch.o compat.o dma.o entry.o irq.o \
+obj-y := compat.o dma.o entry.o irq.o \
process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \
time.o traps.o ecard.o time-acorn.o dma.o \
ecard.o fiq.o time.o
diff --git a/arch/arm26/kernel/arch.c b/arch/arm26/kernel/arch.c
deleted file mode 100644
index 186de4fd6be3..000000000000
--- a/arch/arm26/kernel/arch.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * linux/arch/arm/kernel/arch.c
- *
- * Architecture specific fixups.
- */
-#include <linux/config.h>
-#include <linux/init.h>
-#include <linux/types.h>
-
-#include <asm/elf.h>
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-#include <asm/arch.h>
-#include <asm/page.h>
-
-unsigned int vram_size;
-
-
-unsigned int memc_ctrl_reg;
-unsigned int number_mfm_drives;
-
-static int __init parse_tag_acorn(const struct tag *tag)
-{
- memc_ctrl_reg = tag->u.acorn.memc_control_reg;
- number_mfm_drives = tag->u.acorn.adfsdrives;
- return 0;
-}
-
-__tagtable(ATAG_ACORN, parse_tag_acorn);
-
diff --git a/arch/arm26/kernel/asm-offsets.c b/arch/arm26/kernel/asm-offsets.c
index 1e8764884737..b8d0442de9b5 100644
--- a/arch/arm26/kernel/asm-offsets.c
+++ b/arch/arm26/kernel/asm-offsets.c
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1995-2001 Russell King
* 2001-2002 Keith Owens
- * 2003-? Ian Molton
+ * 2003 Ian Molton
*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed to extract
diff --git a/arch/arm26/kernel/compat.c b/arch/arm26/kernel/compat.c
index 0f8644fe6a86..e3717ab1c043 100644
--- a/arch/arm26/kernel/compat.c
+++ b/arch/arm26/kernel/compat.c
@@ -26,7 +26,7 @@
#include <asm/mach-types.h>
#include <asm/page.h>
-#include <asm/arch.h>
+//#include <asm/arch.h>
//#include <asm/mach/irq.h>
/*
diff --git a/arch/arm26/kernel/dma.c b/arch/arm26/kernel/dma.c
index a6ae4e23651d..b4b8c7c4bbe8 100644
--- a/arch/arm26/kernel/dma.c
+++ b/arch/arm26/kernel/dma.c
@@ -2,7 +2,7 @@
* linux/arch/arm/kernel/dma.c
*
* Copyright (C) 1995-2000 Russell King
- * 2003-? Ian Molton
+ * 2003 Ian Molton
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
diff --git a/arch/arm26/kernel/ecard.c b/arch/arm26/kernel/ecard.c
index d69497a92811..b57a2e6b87eb 100644
--- a/arch/arm26/kernel/ecard.c
+++ b/arch/arm26/kernel/ecard.c
@@ -11,9 +11,8 @@
* Find all installed expansion cards, and handle interrupts from them.
*
* Created from information from Acorns RiscOS3 PRMs
- *
- * 08-Dec-1996 RMK Added code for the 9'th expansion card - the ether
- * podule slot.
+ * 15-Jun-2003 IM Modified from ARM32 (RiscPC capable) version
+ * 10-Jan-1999 RMK Run loaders in a simulated RISC OS environment.
* 06-May-1997 RMK Added blacklist for cards whose loader doesn't work.
* 12-Sep-1997 RMK Created new handling of interrupt enables/disables
* - cards can now register their own routine to control
@@ -21,10 +20,7 @@
* 29-Sep-1997 RMK Expansion card interrupt hardware not being re-enabled
* on reset from Linux. (Caused cards not to respond
* under RiscOS without hard reset).
- * 15-Feb-1998 RMK Added DMA support
- * 12-Sep-1998 RMK Added EASI support
- * 10-Jan-1999 RMK Run loaders in a simulated RISC OS environment.
- * 17-Apr-1999 RMK Support for EASI Type C cycles.
+ *
*/
#define ECARD_C
@@ -527,8 +523,7 @@ static int ecard_prints(char *buffer, ecard_t *ec)
{
char *start = buffer;
- buffer += sprintf(buffer, " %d: %s ", ec->slot_no,
- ec->type == ECARD_EASI ? "EASI" : " ");
+ buffer += sprintf(buffer, " %d: ", ec->slot_no);
if (ec->cid.id == 0) {
struct in_chunk_dir incd;
@@ -674,7 +669,7 @@ ecard_probe(int slot, card_type_t type)
memset(ec, 0, sizeof(ecard_t));
ec->slot_no = slot;
- ec->type = type;
+ ec->type = type;
ec->irq = NO_IRQ;
ec->fiq = NO_IRQ;
ec->dma = NO_DMA;
@@ -770,9 +765,8 @@ static int __init ecard_init(void)
printk("Probing expansion cards\n");
- for (slot = 0; slot < 8; slot ++) {
- if (ecard_probe(slot, ECARD_EASI) == -ENODEV)
- ecard_probe(slot, ECARD_IOC);
+ for (slot = 0; slot < 4; slot ++) {
+ ecard_probe(slot, ECARD_IOC);
}
irqhw = ecard_probeirqhw();
diff --git a/arch/arm26/kernel/irq.c b/arch/arm26/kernel/irq.c
index 3b4965a28193..ddd2ea591afd 100644
--- a/arch/arm26/kernel/irq.c
+++ b/arch/arm26/kernel/irq.c
@@ -41,7 +41,7 @@
* not be set too low to prevent false triggering. Conversely, if it
* is set too high, then you could miss a stuck IRQ.
*
- * Maybe we ought to set a timer and re-enable the IRQ at a later time?
+ * FIXME Maybe we ought to set a timer and re-enable the IRQ at a later time?
*/
#define MAX_IRQ_CNT 100000
@@ -49,7 +49,6 @@ static volatile unsigned long irq_err_count;
static spinlock_t irq_controller_lock = SPIN_LOCK_UNLOCKED;
struct irqdesc irq_desc[NR_IRQS];
-void (*init_arch_irq)(void) __initdata = NULL;
/*
* Dummy mask/unmask handler
@@ -88,7 +87,6 @@ void disable_irq(unsigned int irq)
{
struct irqdesc *desc = irq_desc + irq;
unsigned long flags;
-
spin_lock_irqsave(&irq_controller_lock, flags);
if (!desc->depth++)
desc->enabled = 0;
@@ -114,7 +112,7 @@ void enable_irq(unsigned int irq)
spin_lock_irqsave(&irq_controller_lock, flags);
if (unlikely(!desc->depth)) {
printk("enable_irq(%u) unbalanced from %p\n", irq,
- __builtin_return_address(0));
+ __builtin_return_address(0)); //FIXME bum addresses reported - why?
} else if (!--desc->depth) {
desc->probing = 0;
desc->enabled = 1;
@@ -187,7 +185,6 @@ __do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs)
unsigned int status;
spin_unlock(&irq_controller_lock);
-
if (!(action->flags & SA_INTERRUPT))
local_irq_enable();
@@ -700,6 +697,6 @@ void __init init_IRQ(void)
for (irq = 0, desc = irq_desc; irq < NR_IRQS; irq++, desc++)
*desc = bad_irq_desc;
- init_arch_irq();
+ arc_init_irq();
init_dma();
}
diff --git a/arch/arm26/kernel/process.c b/arch/arm26/kernel/process.c
index 6a4283a30199..bf8e0367be88 100644
--- a/arch/arm26/kernel/process.c
+++ b/arch/arm26/kernel/process.c
@@ -227,7 +227,9 @@ extern void free_page_8k(unsigned long page);
#define ll_alloc_task_struct() ((struct thread_info *)get_page_8k(GFP_KERNEL))
#define ll_free_task_struct(p) free_page_8k((unsigned long)(p))
-struct thread_info *alloc_thread_info(void)
+//FIXME - do we use *task param below looks like we dont, which is ok?
+//FIXME - if EXTRA_TASK_STRUCT is zero we can optimise the below away permanently. *IF* its supposed to be zero.
+struct thread_info *alloc_thread_info(struct task_struct *task)
{
struct thread_info *thread = NULL;
diff --git a/arch/arm26/kernel/setup.c b/arch/arm26/kernel/setup.c
index f4523c16ae0f..a5e07d757be7 100644
--- a/arch/arm26/kernel/setup.c
+++ b/arch/arm26/kernel/setup.c
@@ -30,7 +30,6 @@
#include <asm/mach-types.h>
#include <asm/tlbflush.h>
-#include <asm/arch.h>
#include <asm/irqchip.h>
#ifndef MEM_SIZE
@@ -66,6 +65,8 @@ unsigned int system_rev;
unsigned int system_serial_low;
unsigned int system_serial_high;
unsigned int elf_hwcap;
+unsigned int memc_ctrl_reg;
+unsigned int number_mfm_drives;
struct processor processor;
@@ -147,33 +148,6 @@ static void __init setup_processor(void)
cpu_proc_init();
}
-static struct machine_desc * __init setup_machine(unsigned int nr)
-{
- extern struct machine_desc __arch_info_begin, __arch_info_end;
- struct machine_desc *list;
-
- /*
- * locate architecture in the list of supported architectures.
- */
- for (list = &__arch_info_begin; list < &__arch_info_end; list++)
- if (list->nr == nr)
- break;
-
- /*
- * If the architecture type is not recognised, then we
- * can co nothing...
- */
- if (list >= &__arch_info_end) {
- printk("Architecture configuration botched (nr %d), unable "
- "to continue.\n", nr);
- while (1);
- }
-
- printk("Machine: %s\n", list->name);
-
- return list;
-}
-
/*
* Initial parsing of the command line. We need to pick out the
* memory size. We look for mem=size@start, where start and size
@@ -239,7 +213,7 @@ setup_ramdisk(int doload, int prompt, int image_start, unsigned int rd_sz)
}
static void __init
-request_standard_resources(struct meminfo *mi, struct machine_desc *mdesc)
+request_standard_resources(struct meminfo *mi)
{
struct resource *res;
int i;
@@ -274,22 +248,18 @@ request_standard_resources(struct meminfo *mi, struct machine_desc *mdesc)
request_resource(res, &kernel_data);
}
- if (mdesc->video_start) {
+/* FIXME - needed? if (mdesc->video_start) {
video_ram.start = mdesc->video_start;
video_ram.end = mdesc->video_end;
request_resource(&iomem_resource, &video_ram);
- }
+ }*/
/*
* Some machines don't have the possibility of ever
- * possessing lp0, lp1 or lp2
+ * possessing lp1 or lp2
*/
- if (mdesc->reserve_lp0)
+ if (0) /* FIXME - need to do this for A5k at least */
request_resource(&ioport_resource, &lp0);
- if (mdesc->reserve_lp1)
- request_resource(&ioport_resource, &lp1);
- if (mdesc->reserve_lp2)
- request_resource(&ioport_resource, &lp2);
}
/*
@@ -359,6 +329,15 @@ static int __init parse_tag_videotext(const struct tag *tag)
__tagtable(ATAG_VIDEOTEXT, parse_tag_videotext);
#endif
+static int __init parse_tag_acorn(const struct tag *tag)
+{
+ memc_ctrl_reg = tag->u.acorn.memc_control_reg;
+ number_mfm_drives = tag->u.acorn.adfsdrives;
+ return 0;
+}
+
+__tagtable(ATAG_ACORN, parse_tag_acorn);
+
static int __init parse_tag_ramdisk(const struct tag *tag)
{
setup_ramdisk((tag->u.ramdisk.flags & 1) == 0,
@@ -467,15 +446,18 @@ static struct init_tags {
void __init setup_arch(char **cmdline_p)
{
struct tag *tags = (struct tag *)&init_tags;
- struct machine_desc *mdesc;
char *from = default_command_line;
setup_processor();
- mdesc = setup_machine(machine_arch_type);
- machine_name = mdesc->name;
+ if(machine_arch_type == MACH_TYPE_A5K)
+ machine_name = "A5000";
+ else if(machine_arch_type == MACH_TYPE_ARCHIMEDES)
+ machine_name = "Archimedes";
+ else
+ machine_name = "UNKNOWN";
- if (mdesc->param_offset)
- tags = (struct tag *)mdesc->param_offset; //FIXME - ugly?
+ //FIXME - this may need altering when we get ROM images working
+ tags = (struct tag *)0x0207c000;
/*
* If we have the old style parameters, convert them to
@@ -501,12 +483,7 @@ void __init setup_arch(char **cmdline_p)
parse_cmdline(&meminfo, cmdline_p, from);
bootmem_init(&meminfo);
paging_init(&meminfo);
- request_standard_resources(&meminfo, mdesc);
-
- /*
- * Set up various architecture-specific pointers
- */
- init_arch_irq = mdesc->init_irq;
+ request_standard_resources(&meminfo);
#ifdef CONFIG_VT
#if defined(CONFIG_DUMMY_CONSOLE)
diff --git a/arch/arm26/kernel/traps.c b/arch/arm26/kernel/traps.c
index eaf86c9fedd1..d0e1bc6cf474 100644
--- a/arch/arm26/kernel/traps.c
+++ b/arch/arm26/kernel/traps.c
@@ -175,6 +175,11 @@ void show_trace_task(struct task_struct *tsk)
}
}
+/* FIXME - this is probably wrong.. */
+void show_stack(struct task_struct *task, unsigned long *sp) {
+ dump_mem("Stack: ", (unsigned long)sp, 8192+(unsigned long)task->thread_info);
+}
+
spinlock_t die_lock = SPIN_LOCK_UNLOCKED;
/*
@@ -497,7 +502,7 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
die_if_kernel("unknown data abort code", regs, instr);
}
-void __bug(const char *file, int line, void *data)
+volatile void __bug(const char *file, int line, void *data)
{
printk(KERN_CRIT"kernel BUG at %s:%d!", file, line);
if (data)
diff --git a/arch/arm26/lib/Makefile b/arch/arm26/lib/Makefile
index d327dc7f385e..d05d6b0fd3e2 100644
--- a/arch/arm26/lib/Makefile
+++ b/arch/arm26/lib/Makefile
@@ -4,9 +4,7 @@
# Copyright (C) 1995-2000 Russell King
#
-L_TARGET := lib.a
-
-obj-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
+lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
csumpartialcopy.o csumpartialcopyuser.o clearbit.o \
copy_page.o delay.o findbit.o memchr.o memcpy.o \
memset.o memzero.o setbit.o \
@@ -16,15 +14,12 @@ obj-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
ucmpdi2.o udivdi3.o lib1funcs.o ecard.o io-acorn.o \
floppydma.o io-readsb.o io-writesb.o io-writesl.o \
uaccess-kernel.o uaccess-user.o io-readsw-armv3.o \
- io-writesw-armv3.o io-readsl-armv3.o
-
-obj-m :=
-obj-n :=
-
-obj-$(CONFIG_VT)+= kbd.o
+ io-writesw-armv3.o io-readsl-armv3.o ecard.o \
+ io-acorn.o floppydma.o
-obj-y += ecard.o io-acorn.o floppydma.o
+lib-n :=
+lib-$(CONFIG_VT)+= kbd.o
csumpartialcopy.o: csumpartialcopygeneric.S
csumpartialcopyuser.o: csumpartialcopygeneric.S
diff --git a/arch/arm26/machine/Makefile b/arch/arm26/machine/Makefile
index f1211f9c9827..84642febab44 100644
--- a/arch/arm26/machine/Makefile
+++ b/arch/arm26/machine/Makefile
@@ -4,7 +4,7 @@
# Object file lists.
-obj-y := arch.o dma.o irq.o oldlatches.o \
+obj-y := dma.o irq.o oldlatches.o \
small_page.o
extra-y := head.o
diff --git a/arch/arm26/machine/arch.c b/arch/arm26/machine/arch.c
deleted file mode 100644
index 410c2852afaf..000000000000
--- a/arch/arm26/machine/arch.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * linux/arch/arm26/mach-arc/arch.c
- *
- * Copyright (C) 1998-2001 Russell King
- * Copyright (C) 2003 Ian Molton
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Architecture specific fixups.
- */
-#include <linux/config.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <asm/mach-types.h>
-#include <asm/hardware.h>
-#include <asm/page.h>
-#include <asm/setup.h>
-
-#include <asm/map.h>
-#include <asm/arch.h>
-
-extern void arc_init_irq(void);
-
-#ifdef CONFIG_ARCH_ARC
-MACHINE_START(ARCHIMEDES, "Acorn-Archimedes")
-#elif defined(CONFIG_ARCH_A5K)
-MACHINE_START(A5K, "Acorn-A5000")
-#endif
- MAINTAINER("Ian Molton")
- BOOT_PARAMS(0x0207c000)
- INITIRQ(arc_init_irq)
-MACHINE_END
-
diff --git a/arch/arm26/machine/irq.c b/arch/arm26/machine/irq.c
index 1c5f88fb2e52..158a7d29efbc 100644
--- a/arch/arm26/machine/irq.c
+++ b/arch/arm26/machine/irq.c
@@ -73,7 +73,6 @@ static struct irqchip arc_a_chip = {
static void arc_mask_irq_b(unsigned int irq)
{
unsigned int val, mask;
-
mask = 1 << (irq & 7);
val = ioc_readb(IOC_IRQMASKB);
ioc_writeb(val & ~mask, IOC_IRQMASKB);
@@ -94,7 +93,7 @@ static struct irqchip arc_b_chip = {
.unmask = arc_unmask_irq_b,
};
-/* FIXME - JMA none of these functions are used in arm26
+/* FIXME - JMA none of these functions are used in arm26 currently
static void arc_mask_irq_fiq(unsigned int irq)
{
unsigned int val, mask;
@@ -124,6 +123,7 @@ void __init arc_init_irq(void)
{
unsigned int irq, flags;
+ /* Disable all IOC interrupt sources */
ioc_writeb(0, IOC_IRQMASKA);
ioc_writeb(0, IOC_IRQMASKB);
ioc_writeb(0, IOC_FIQMASK);
diff --git a/arch/arm26/mm/init.c b/arch/arm26/mm/init.c
index 01c772bef70e..989f08c19c62 100644
--- a/arch/arm26/mm/init.c
+++ b/arch/arm26/mm/init.c
@@ -32,7 +32,7 @@
#include <asm/setup.h>
#include <asm/tlb.h>
-#include <asm/arch.h>
+//#include <asm/arch.h>
#include <asm/map.h>
#define TABLE_SIZE PTRS_PER_PTE * sizeof(pte_t))
diff --git a/arch/arm26/mm/mm-memc.c b/arch/arm26/mm/mm-memc.c
index 15ec20e2750c..6b3d3ae806f4 100644
--- a/arch/arm26/mm/mm-memc.c
+++ b/arch/arm26/mm/mm-memc.c
@@ -70,11 +70,9 @@ void free_pgd_slow(pgd_t *pgd)
pgd_t *get_pgd_slow(struct mm_struct *mm)
{
- void *pg2k;
pgd_t *new_pgd, *init_pgd;
pmd_t *new_pmd, *init_pmd;
pte_t *new_pte, *init_pte;
- struct mm_struct bob;
new_pgd = alloc_pgd_table();
if (!new_pgd)
diff --git a/include/asm-arm26/arch.h b/include/asm-arm26/arch.h
deleted file mode 100644
index 1011bcc6d7ac..000000000000
--- a/include/asm-arm26/arch.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * linux/include/asm-arm/mach/arch.h
- *
- * Copyright (C) 2000 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/*
- * The size of struct machine_desc
- * (for assembler code)
- * FIXME - I count 45... or is this padding?
- */
-#define SIZEOF_MACHINE_DESC 48
-
-#ifndef __ASSEMBLY__
-
-struct tag;
-
-struct machine_desc {
- int nr; /* arch no FIXME - get rid */
- const char *name; /* architecture name */
- unsigned int param_offset; /* parameter page */
-
- unsigned int video_start; /* start of video RAM */
- unsigned int video_end; /* end of video RAM */
-
- unsigned int reserve_lp0 :1; /* never has lp0 */
- unsigned int reserve_lp1 :1; /* never has lp1 */
- unsigned int reserve_lp2 :1; /* never has lp2 */
- unsigned int soft_reboot :1; /* soft reboot */
- void (*fixup)(struct machine_desc *,
- struct tag *, char **,
- struct meminfo *);
- void (*map_io)(void);/* IO mapping function */
- void (*init_irq)(void);
-};
-
-/*
- * 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 \
- __attribute__((__section__(".arch.info"))) = { \
- nr: MACH_TYPE_##_type, \
- name: _name,
-
-#define MAINTAINER(n)
-
-#define BOOT_PARAMS(_params) \
- param_offset: _params,
-
-#define INITIRQ(_func) \
- init_irq: _func,
-
-#define MACHINE_END \
-};
-
-#endif
diff --git a/include/asm-arm26/bug.h b/include/asm-arm26/bug.h
index a92b1bc8eb1e..a1afde728b03 100644
--- a/include/asm-arm26/bug.h
+++ b/include/asm-arm26/bug.h
@@ -4,7 +4,7 @@
#include <linux/config.h>
#ifdef CONFIG_DEBUG_BUGVERBOSE
-extern void __bug(const char *file, int line, void *data);
+extern volatile void __bug(const char *file, int line, void *data);
/* give file/line information */
#define BUG() __bug(__FILE__, __LINE__, NULL)
@@ -18,4 +18,13 @@ extern void __bug(const char *file, int line, void *data);
#endif
+#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
+
+#define WARN_ON(condition) do { \
+ if (unlikely((condition)!=0)) { \
+ printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \
+ dump_stack(); \
+ } \
+} while (0)
+
#endif
diff --git a/include/asm-arm26/bugs.h b/include/asm-arm26/bugs.h
index 665ab62c27ce..e99ac2e46d7f 100644
--- a/include/asm-arm26/bugs.h
+++ b/include/asm-arm26/bugs.h
@@ -1,5 +1,5 @@
/*
- * linux/include/asm-arm/bugs.h
+ * linux/include/asm-arm26/bugs.h
*
* Copyright (C) 1995 Russell King
*
diff --git a/include/asm-arm26/ecard.h b/include/asm-arm26/ecard.h
index 28af14fd7f75..8318a0c1df81 100644
--- a/include/asm-arm26/ecard.h
+++ b/include/asm-arm26/ecard.h
@@ -26,6 +26,9 @@
#define PROD_ACORN_ETHER1 0x0003
#define PROD_ACORN_MFM 0x000b
+#define MANU_CCONCEPTS 0x0009
+#define PROD_CCONCEPTS_COLOURCARD 0x0050
+
#define MANU_ANT2 0x0011
#define PROD_ANT_ETHER3 0x00a4
diff --git a/include/asm-arm26/mach-types.h b/include/asm-arm26/mach-types.h
index 514b8032696c..b34045b78128 100644
--- a/include/asm-arm26/mach-types.h
+++ b/include/asm-arm26/mach-types.h
@@ -1,5 +1,6 @@
/*
* Unlike ARM32 this is NOT automatically generated. DONT delete it
+ * Instead, consider FIXME-ing it so its auto-detected.
*/
#ifndef __ASM_ARM_MACH_TYPE_H
diff --git a/include/asm-arm26/pgalloc.h b/include/asm-arm26/pgalloc.h
index bf2e19512524..6437167b1ffe 100644
--- a/include/asm-arm26/pgalloc.h
+++ b/include/asm-arm26/pgalloc.h
@@ -55,9 +55,9 @@ pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmdp, pte_t *ptep)
* is thrown away. It just cant be zero. -IM
*/
-#define pmd_alloc_one(mm,addr) ((pmd_t *)2); BUG()
+#define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); })
#define pmd_free(pmd) do { } while (0)
-#define pgd_populate(mm,pmd,pte) (0)
+#define pgd_populate(mm,pmd,pte) BUG()
extern pgd_t *get_pgd_slow(struct mm_struct *mm);
extern void free_pgd_slow(pgd_t *pgd);
diff --git a/include/asm-arm26/pgtable.h b/include/asm-arm26/pgtable.h
index a6ac3957b0be..3fb067eaf801 100644
--- a/include/asm-arm26/pgtable.h
+++ b/include/asm-arm26/pgtable.h
@@ -179,7 +179,7 @@ extern struct page *empty_zero_page;
/* Is pmd_page supposed to return a pointer to a page in some arches? ours seems to
* return a pointer to memory (no special alignment)
*/
-#define pmd_page(pmd) ((unsigned long)(pmd_val((pmd)) & ~_PMD_PRESENT))
+#define pmd_page(pmd) ((struct page *)(pmd_val((pmd)) & ~_PMD_PRESENT))
#define pmd_page_kernel(pmd) ((pte_t *)(pmd_val((pmd)) & ~_PMD_PRESENT))
#define pte_offset_kernel(dir,addr) (pmd_page_kernel(*(dir)) + __pte_index(addr))
diff --git a/include/asm-arm26/statfs.h b/include/asm-arm26/statfs.h
index a1eba73ded99..776dbc8f7623 100644
--- a/include/asm-arm26/statfs.h
+++ b/include/asm-arm26/statfs.h
@@ -1,25 +1,8 @@
#ifndef _ASMARM_STATFS_H
#define _ASMARM_STATFS_H
-#ifndef __KERNEL_STRICT_NAMES
+//FIXME - this may not be appropriate for arm26. check it out.
-#include <linux/types.h>
-
-typedef __kernel_fsid_t fsid_t;
-
-#endif
-
-struct statfs {
- long f_type;
- long f_bsize;
- long f_blocks;
- long f_bfree;
- long f_bavail;
- long f_files;
- long f_ffree;
- __kernel_fsid_t f_fsid;
- long f_namelen;
- long f_spare[6];
-};
+#include <asm-generic/statfs.h>
#endif
diff --git a/include/asm-arm26/thread_info.h b/include/asm-arm26/thread_info.h
index 3f298bf9206a..24c5136484fb 100644
--- a/include/asm-arm26/thread_info.h
+++ b/include/asm-arm26/thread_info.h
@@ -85,7 +85,7 @@ static inline struct thread_info *current_thread_info(void)
//#define INIT_THREAD_SIZE (65536)
#define __get_user_regs(x) (((struct pt_regs *)((unsigned long)(x) + THREAD_SIZE - 8)) - 1)
-extern struct thread_info *alloc_thread_info(void);
+extern struct thread_info *alloc_thread_info(struct task_struct *task);
extern void free_thread_info(struct thread_info *);
#define get_thread_info(ti) get_task_struct((ti)->task)