Commit 4d1ceac2 authored by Linus Torvalds's avatar Linus Torvalds

Import 2.3.23pre5

parent 23dd3db1
......@@ -907,14 +907,14 @@ S: CV5 8BZ
S: United Kingdom
N: Ron Holt
E: ron@caldera.com
E: ron@holt.org
W: http://www.holt.org/
P: 1024/1FD44539 DF 4B EB 9F 5B 68 38 9A 40 E3 FB 71 D1 C8 0B 56
W: http://www.ronholt.com/
D: Kernel development
D: Minor kernel modifications to support Wabi and Wine
S: Caldera, Inc.
S: 240 West Center Street
S: Orem, Utah 84059-1920
D: Kernel LDT modifications to support Wabi and Wine
S: Holtron Internetics, Inc.
S: 998 East 900 South, Suite 26
S: Provo, Utah 84606-5607
S: USA
N: Rob W. W. Hooft
......
Brutus is an evaluation platform for the SA1100 manufactured by Intel.
For more details, see:
http://developer.intel.com/design/strong/applnots/sa1100lx/getstart.htm
To compile for Brutus, you must issue the following comands:
make brutus_config
make config
[accept all the defaults]
make dep
make zImage
The resulting kernel will end up in linux/arch/arm/boot/zImage. This file
must be loaded at 0xc0008000 in Brutus's memory and execution started at
0xc0008000 as well.
But prior to execute the kernel, a ramdisk image must also be loaded in
memory. Use memory address 0x00800000 for this.
Currently supported:
- RS232 serial ports
- audio output
- LCD screen
- keyboard (needs to be cleaned up badly... any volunteer?)
A full PCMCIA support is still missing, although it's possible to hack
some drivers in order to drive already inserted cards at boot time with
little modifications.
Any contribution is welcome.
Please send patches to nico@cam.org
Have Fun !
Itsy is a research project done by the Western Research Lab, and Systems
Research Center in Palo Alto, CA. The Itsy project is one of several
research projects at Compaq that are related to pocket computing.
Itsy support has yet to be fully integrated in this kernel. Linux 2.0.x
support is available though.
For more information, see:
http://www.research.digital.com/wrl/itsy/index.html
Linux Advanced Radio Terminal (LART)
------------------------------------
The LART is a small (7.5 x 10cm) SA-1100 board, designed for embedded
applications. It has 32 MB DRAM, 4MB Flash ROM, double RS232 and all
other StrongARM-gadgets. Almost all SA signals are directly accessible
through a number of connectors. The powersupply accepts voltages
between 3.5V and 16V and is overdimensioned to support a range of
daughterboards. A quad Ethernet / IDE / PS2 / sound daughterboard
is under development, with plenty of others in different stages of
planning.
The designs for this board are to be released under a GPL-like license;
we're working on the details.
Contact: J.D. Bakker <bakker@thorgal.et.tudelft.nl>;
pictures at http://www-ict.its.tudelft.nl/~erik/open-source/LART/
The PLEB project was started as a student initiative at the School of
Computer Science and Engineering, University of New South Wales to make a
pocket computer capable of running the Linux Kernel.
PLEB support has yet to be fully integrated.
For more information, see:
http://www.cse.unsw.edu.au/~pleb/
Tifon
-----
More info has to come...
Contact: Peter Danielsson <peter.danielsson@era-t.ericsson.se>
Victor is known as a "digital talking book player" manufactured by
VisuAide, Inc. to be used by blind people.
For more information related to Victor, see:
http://www.visuaide.com/victor
Of course Victor is using Linux as its main operating system.
The Victor implementation for Linux is maintained by Nicolas Pitre:
nico@visuaide.com
nico@cam.org
For any comments, please feel free to contact me through the above
addresses.
Kernel initialisation parameters on ARM Linux
---------------------------------------------
The following document describes the kernel initialisation parameter
structure, otherwise known as 'struct param_struct' which is used
for most ARM Linux architectures.
This structure is used to pass initialisation parameters from the
kernel loader to the Linux kernel proper, and may be short lived
through the kernel initialisation process. As a general rule, it
should not be referenced outside of arch/arm/kernel/setup.c:setup_arch().
There are a lot of parameters listed in there, and they are described
below:
page_size
This parameter must be set to the page size of the machine, and
will be checked by the kernel.
nr_pages
This is the total number of pages of memory in the system. If
the memory is banked, then this should contain the total number
of pages in the system.
If the system contains separate VRAM, this value should not
include this information.
ramdisk_size
This is now obsolete, and should not be used.
flags
Various kernel flags, including:
bit 0 - 1 = mount root read only
bit 1 - unused
bit 2 - 0 = load ramdisk
bit 3 - 0 = prompt for ramdisk
rootdev
major/minor number pair of device to mount as the root filesystem.
video_num_cols
video_num_rows
These two together describe the character size of the dummy console,
or VGA console character size. They should not be used for any other
purpose.
It's generally a good idea to set these to be either standard VGA, or
the equivalent character size of your fbcon display. This then allows
all the bootup messages to be displayed correctly.
video_x
video_y
This describes the character position of cursor on VGA console, and
is otherwise unused. (should not used for other console types, and
should not be used for other purposes).
memc_control_reg
MEMC chip control register for Acorn Archimedes and Acorn A5000
based machines. May be used differently by different architectures.
sounddefault
Default sound setting on Acorn machines. May be used differently by
different architectures.
adfsdrives
Number of ADFS/MFM disks. May be used differently by different
architectures.
bytes_per_char_h
bytes_per_char_v
These are now obsolete, and should not be used.
pages_in_bank[4]
Number of pages in each bank of the systems memory (used for RiscPC).
This is intended to be used on systems where the physical memory
is non-contiguous from the processors point of view.
pages_in_vram
Number of pages in VRAM (used on Acorn RiscPC). This value may also
be used by loaders if the size of the video RAM can't be obtained
from the hardware.
initrd_start
initrd_size
This describes the kernel virtual start address and size of the
inital ramdisk.
rd_start
Start address in sectors of the ramdisk image on a floppy disk.
system_rev
system revision number.
system_serial_low
system_serial_high
system 64-bit serial number
paths[8][128]
These are now obsolete, and should not be used.
commandline
Kernel command line parameters. Details can be found elsewhere.
Empeg, Ltd's Empeg MP3 Car Audio Player
The initial design is to go in your car, but you can use it at home, on a
boat... almost anywhere. The principle is to store CD-quality music using
MPEG technology onto a hard disk in the unit, and use the power of the
embedded computer to serve up the music you want.
For more details, see:
http://www.empeg.com
Infra-red driver documentation.
Mike Crowe <mac@empeg.com>
(C) Empeg Ltd 1999
Not a lot here yet :-)
The Kenwood KCA-R6A remote control generates a sequence like the following:
Go low for approx 16T (Around 9000us)
Go high for approx 8T (Around 4000us)
Go low for less than 2T (Around 750us)
For each of the 32 bits
Go high for more than 2T (Around 1500us) == 1
Go high for less than T (Around 400us) == 0
Go low for less than 2T (Around 750us)
Rather than repeat a signal when the button is held down certain buttons
generate the following code to indicate repitition.
Go low for approx 16T
Go high for approx 4T
Go low for less than 2T
(By removing the <2T from the start of the sequence and placing at the end
it can be considered a stop bit but I found it easier to deal with it at
the start).
The 32 bits are encoded as XxYy where x and y are the actual data values
while X and Y are the logical inverses of the associated data values. Using
LSB first yields sensible codes for the numbers.
All codes are of the form b9xx
The numeric keys generate the code 0x where x is the number pressed.
Tuner 1c
Tape 1d
CD 1e
CD-MD-CH 1f
Track- 0a
Track+ 0b
Rewind 0c
FF 0d
DNPP 5e
Play/Pause 0e
Vol+ 14
Vol- 15
#!/bin/sh
mknod /dev/display c 244 0
mknod /dev/ir c 242 0
mknod /dev/usb0 c 243 0
mknod /dev/audio c 245 4
mknod /dev/dsp c 245 3
mknod /dev/mixer c 245 0
mknod /dev/empeg_state c 246 0
mknod /dev/radio0 c 81 64
ln -sf radio0 radio
ln -sf usb0 usb
......@@ -35,7 +35,7 @@ so far in the emulator. The file TODO contains a information on what
remains to be done, and other ideas for the emulator.
Bug reports, comments, suggestions should be directed to me at
<scottb@corelcomputer.com>. General reports of "this program doesn't
<scottb@netwinder.com>. General reports of "this program doesn't
work correctly when your emulator is installed" are useful for
determining that bugs still exist; but are virtually useless when
attempting to isolate the problem. Please report them, but don't
......@@ -46,7 +46,7 @@ problem are a godsend.
Legal Notices
-------------
The NetWinder Floating Point Emulator is free software. Everything Corel
The NetWinder Floating Point Emulator is free software. Everything Rebel.com
has written is provided under the GNU GPL. See the file COPYING for copying
conditions. Excluded from the above is the SoftFloat code. John Hauser's
legal notice for SoftFloat is included below.
......
......@@ -139,10 +139,10 @@ be implemented in future versions.
Signalling:
Signals are implemented. However current ELF kernels produced by Corel
Computer have a bug in them that prevents the module from generating a
SIGFPE. This is caused by a failure to alias fp_current to the kernel
variable current_set[0] correctly.
Signals are implemented. However current ELF kernels produced by Rebel.com
have a bug in them that prevents the module from generating a SIGFPE. This
is caused by a failure to alias fp_current to the kernel variable
current_set[0] correctly.
The kernel provided with this distribution (vmlinux-nwfpe-0.93) contains
a fix for this problem and also incorporates the current version of the
......
......@@ -12,91 +12,101 @@
#
# Copyright (C) 1995-1999 by Russell King
# GCC 2.7 uses different options to later compilers; sort out which we have
CONFIG_GCC_NEW := $(shell if $(CC) --version 2>&1 | grep '^2\.7' > /dev/null; then echo n; else echo y; fi)
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S
CPP := $(CC) -E
PERL := perl
LINKFLAGS := -X -T arch/arm/vmlinux.lds
ARCHCC := $(word 1,$(CC))
CFLAGS_PIPE := -pipe
CFLAGS := $(CFLAGS) $(CFLAGS_PIPE)
ifdef CONFIG_FRAME_POINTER
CFLAGS := $(CFLAGS:-fomit-frame-pointer=)
endif
ifdef CONFIG_DEBUG_INFO
CFLAGS += -g
endif
# See if this is ld "2.9.4" or later
NEW_LINKER := $(shell if $(LD) --gc-sections --version >/dev/null 2>&1; then echo y; else echo n; fi)
# CFLAGS_PROC - processor dependent CFLAGS
# PROCESSOR - processor type
# TEXTADDR - Uncompressed kernel link text address
# ZTEXTADDR - Compressed kernel link text address
# ZRELADDR - Compressed kernel relocating address
# (point at which uncompressed kernel is loaded).
# GCC 2.7 uses different options to later compilers; sort out which we have
NEW_GCC := $(shell if $(CC) --version 2>&1 | grep '^2\.7' > /dev/null; then echo n; else echo y; fi)
#
# select flags depending on the compiler
#
ifeq ($(CONFIG_GCC_NEW),y)
CFLAGS_PROC := -mshort-load-bytes -msoft-float
CFLAGS_PROC_CPU_26 := -mcpu=arm3 -Os
CFLAGS_PROC_CPU_32v3 := -march=armv3
CFLAGS_PROC_CPU_32v4 := -march=armv4
CFLAGS_ARM6 := -mtune=arm6
CFLAGS_ARM7 := -mtune=arm7
CFLAGS_SA110 := -mtune=strongarm110
ifeq ($(NEW_GCC),y)
CFLAGS += -mshort-load-bytes -msoft-float
CFLAGS_PROC_CPU_26 := -mcpu=arm3 -Os
CFLAGS_PROC_CPU_32v3 := -march=armv3
CFLAGS_PROC_CPU_32v4 := -march=armv4
CFLAGS_ARM6 := -mtune=arm6
CFLAGS_ARM7 := -mtune=arm7
CFLAGS_SA110 := -mtune=strongarm110
else
CFLAGS_PROC :=
CFLAGS_PROC_CPU_26 := -m3
CFLAGS_PROC_CPU_32v3 :=
CFLAGS_PROC_CPU_32v4 :=
CFLAGS_ARM6 := -m6
CFLAGS_ARM7 := -m6
CFLAGS_SA110 := -m6
CFLAGS_PROC_CPU_26 := -m3
CFLAGS_PROC_CPU_32v3 :=
CFLAGS_PROC_CPU_32v4 :=
CFLAGS_ARM6 := -m6
CFLAGS_ARM7 := -m6
CFLAGS_SA110 := -m6
endif
# See if this is ld "2.9.4" or later
NEW_LINKER := $(shell if $(LD) --gc-sections --version >/dev/null 2>&1; then echo y; else echo n; fi)
ifeq ($(NEW_LINKER),y)
ASFLAGS_PROC := -mno-fpu
ASFLAGS_PROC_CPU_26 := -mapcs-26
ASFLAGS_PROC_CPU_32v3 := -mapcs-32 -marmv3m
ASFLAGS_PROC_CPU_32v4 := -mapcs-32 -marmv4t
LINKFLAGS := -p
AFLAGS += -mno-fpu
AFLAGS_PROC_CPU_26 := -mapcs-26
AFLAGS_PROC_CPU_32v3 := -mapcs-32 -marmv3m
AFLAGS_PROC_CPU_32v4 := -mapcs-32 -marmv4t
LINKFLAGS := -p $(LINKFLAGS)
else
ASFLAGS_PROC :=
ASFLAGS_PROC_CPU_26 := -m3
ASFLAGS_PROC_CPU_32v3 := -m6
ASFLAGS_PROC_CPU_32v4 := -m6
LINKFLAGS :=
AFLAGS_PROC_CPU_26 := -m3
AFLAGS_PROC_CPU_32v3 := -m6
AFLAGS_PROC_CPU_32v4 := -m6
endif
#
# Select CPU dependent flags
#
ifeq ($(CONFIG_CPU_26),y)
PROCESSOR = armo
TEXTADDR = 0x02080000
ZTEXTADDR = 0x01800000
ZRELADDR = 0x02080000
CFLAGS_PROC += $(CFLAGS_PROC_CPU_26)
ASFLAGS_PROC += $(ASFLAGS_PROC_CPU_26)
PROCESSOR = armo
TEXTADDR = 0x02080000
CFLAGS += $(CFLAGS_PROC_CPU_26)
AFLAGS += $(AFLAGS_PROC_CPU_26)
endif
ifeq ($(CONFIG_CPU_32),y)
PROCESSOR = armv
TEXTADDR = 0xC0008000
ifeq ($(CONFIG_CPU_32v4),y)
CFLAGS_PROC += $(CFLAGS_PROC_CPU_32v4)
ASFLAGS_PROC += $(ASFLAGS_PROC_CPU_32v4)
else
CFLAGS_PROC += $(CFLAGS_PROC_CPU_32v3)
ASFLAGS_PROC += $(ASFLAGS_PROC_CPU_32v3)
endif
#
# Exactly one of the following must be selected
#
ifeq ($(CONFIG_CPU_ARM6),y)
CFLAGS_PROC += $(CFLAGS_ARM6)
else
ifeq ($(CONFIG_CPU_ARM7),y)
CFLAGS_PROC += $(CFLAGS_ARM7)
else
ifeq ($(CONFIG_CPU_SA110),y)
CFLAGS_PROC += $(CFLAGS_SA110)
endif
endif
endif
PROCESSOR = armv
TEXTADDR = 0xC0008000
ifeq ($(CONFIG_CPU_32v4),y)
CFLAGS += $(CFLAGS_PROC_CPU_32v4)
AFLAGS += $(AFLAGS_PROC_CPU_32v4)
else
CFLAGS += $(CFLAGS_PROC_CPU_32v3)
AFLAGS += $(AFLAGS_PROC_CPU_32v3)
endif
#
# Exactly one of the following must be selected
#
ifeq ($(CONFIG_CPU_ARM6),y)
CFLAGS += $(CFLAGS_ARM6)
else
ifeq ($(CONFIG_CPU_ARM7),y)
CFLAGS += $(CFLAGS_ARM7)
else
ifeq ($(CONFIG_CPU_SA110),y)
CFLAGS += $(CFLAGS_SA110)
endif
endif
endif
endif
COMPRESSED_HEAD = head.o
GCCLIB := $(shell $(CC) $(CFLAGS) --print-libgcc-file-name)
ifeq ($(CONFIG_ARCH_A5K),y)
MACHINE = a5k
......@@ -111,22 +121,16 @@ endif
ifeq ($(CONFIG_ARCH_RPC),y)
MACHINE = rpc
ARCHDIR = rpc
ZTEXTADDR = 0x10008000
ZRELADDR = 0x10008000
endif
ifeq ($(CONFIG_ARCH_EBSA110),y)
MACHINE = ebsa110
ARCHDIR = ebsa110
ZTEXTADDR = 0x00008000
ZRELADDR = 0x00008000
endif
ifeq ($(CONFIG_FOOTBRIDGE),y)
MACHINE = footbridge
ARCHDIR = ebsa285
ZTEXTADDR = 0x00008000
ZRELADDR = 0x00008000
endif
ifeq ($(CONFIG_ARCH_CO285),y)
......@@ -136,56 +140,31 @@ endif
ifeq ($(CONFIG_ARCH_NEXUSPCI),y)
MACHINE = nexuspci
ARCHDIR = nexuspci
ZTEXTADDR = 0x40200000
ZRELADDR = 0x40008000
COMPRESSED_EXTRA = $(TOPDIR)/arch/arm/lib/ll_char_wr_scc.o
COMPRESSED_HEAD = head-nexuspci.o
endif
PERL = perl
LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S
OBJDUMP = $(CROSS_COMPILE)objdump
CPP = $(CC) -E
ARCHCC := $(word 1,$(CC))
GCCLIB := `$(CC) $(CFLAGS_PROC) --print-libgcc-file-name`
HOSTCFLAGS := $(CFLAGS:-fomit-frame-pointer=)
ifeq ($(CONFIG_FRAME_POINTER),y)
CFLAGS := $(CFLAGS:-fomit-frame-pointer=)
endif
CFLAGS := $(CFLAGS_PROC) $(CFLAGS) -pipe
ASFLAGS := $(ASFLAGS_PROC) $(ASFLAGS)
LINKFLAGS += -X -T $(TOPDIR)/arch/arm/vmlinux-$(PROCESSOR).lds -e stext
ZLINKFLAGS = -Ttext $(ZTEXTADDR)
# If we're intending to debug the kernel, make sure it has line number
# information. This gets stripped out when building (z)Image so it doesn't
# add anything to the footprint of the running kernel.
ifeq ($(CONFIG_DEBUG_INFO),y)
CFLAGS += -g
ifeq ($(CONFIG_ARCH_SA1100),u)
MACHINE = sa1100
ARCHDIR = sa1100
endif
HEAD := arch/arm/kernel/head-$(PROCESSOR).o \
arch/arm/kernel/init_task.o
SUBDIRS := arch/arm/special $(SUBDIRS) arch/arm/lib arch/arm/kernel \
arch/arm/mm arch/arm/nwfpe
SUBDIRS += arch/arm/kernel arch/arm/mm arch/arm/lib \
arch/arm/special arch/arm/nwfpe
CORE_FILES := arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES)
LIBS := arch/arm/lib/lib.a $(LIBS) $(GCCLIB)
DRIVERS += arch/arm/special/special.a
ifeq ($(CONFIG_ARCH_ACORN),y)
SUBDIRS += drivers/acorn/block drivers/acorn/char drivers/acorn/net \
drivers/acorn/scsi
DRIVERS += drivers/acorn/block/acorn-block.a \
drivers/acorn/char/acorn-char.a \
drivers/acorn/net/acorn-net.a \
drivers/acorn/scsi/acorn-scsi.a
ifeq ($(CONFIG_NWFPE),y)
CORE_FILES += arch/arm/nwfpe/math-emu.o
endif
ifeq ($(CONFIG_NWFPE),y)
DRIVERS += arch/arm/nwfpe/math-emu.a
ifeq ($(CONFIG_ARCH_ACORN),y)
SUBDIRS += drivers/acorn
DRIVERS += drivers/acorn/block/acorn-block.a
DRIVERS += drivers/acorn/char/acorn-char.a
DRIVERS += drivers/acorn/net/acorn-net.a
DRIVERS += drivers/acorn/scsi/acorn-scsi.a
endif
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
......@@ -203,14 +182,9 @@ archsymlinks:
$(RM) include/asm-arm/arch include/asm-arm/proc
(cd include/asm-arm; ln -sf arch-$(ARCHDIR) arch; ln -sf proc-$(PROCESSOR) proc)
# We need to rebuild the linker script
# each time, in case the architecture has
# changed.
.PHONY: arch/arm/vmlinux-$(PROCESSOR).lds
vmlinux: arch/arm/vmlinux-$(PROCESSOR).lds
vmlinux: arch/arm/vmlinux.lds
arch/arm/vmlinux-$(PROCESSOR).lds: $(TOPDIR)/arch/arm/vmlinux-$(PROCESSOR).lds.in
arch/arm/vmlinux.lds: arch/arm/vmlinux-$(PROCESSOR).lds.in dummy
@sed 's/TEXTADDR/$(TEXTADDR)/' <$< >$@
arch/arm/kernel: dummy
......@@ -225,15 +199,13 @@ arch/arm/lib: dummy
zImage zinstall Image install: vmlinux
@$(MAKEBOOT) $@
# Once we've finished integrating the sources, the @$(MAKE) will disappear
archmrproper:
rm -f include/asm-arm/arch include/asm-arm/proc
@$(MAKE) -C arch/$(ARCH)/special mrproper
rm -f $(TOPDIR)/arch/arm/vmlinux-*.lds
$(RM) include/asm-arm/arch include/asm-arm/proc
archclean:
@$(MAKEBOOT) clean
$(RM) arch/arm/lib/constants.h
$(RM) arch/arm/lib/constants.h arch/arm/vmlinux.lds
archdep:
@$(MAKEBOOT) dep
......@@ -244,6 +216,10 @@ Img:; @$(MAKEBOOT) Image
i:; @$(MAKEBOOT) install
zi:; @$(MAKEBOOT) zinstall
#
# Configuration targets. Use these to select a
# configuration for your architecture
#
a5k_config:
$(RM) arch/arm/defconfig
cp arch/arm/def-configs/a5k arch/arm/defconfig
......@@ -260,3 +236,16 @@ rpc_config:
$(RM) arch/arm/defconfig
cp arch/arm/def-configs/rpc arch/arm/defconfig
brutus_config:
$(RM) arch/arm/defconfig
cp arch/arm/def-configs/brutus arch/arm/defconfig
victor_config:
$(RM) arch/arm/defconfig
cp arch/arm/def-configs/victor arch/arm/defconfig
empeg_config:
$(RM) arch/arm/defconfig
cp arch/arm/def-configs/empeg arch/arm/defconfig
......@@ -2,47 +2,97 @@
# linux/arch/arm/boot/compressed/Makefile
#
# create a compressed vmlinuz image from the original vmlinux
#
# With this config, max compressed image size = 640k
# Uncompressed image size = 1.3M (text+data)
SYSTEM =$(TOPDIR)/vmlinux
HEAD =$(COMPRESSED_HEAD)
OBJS =$(HEAD) misc.o $(COMPRESSED_EXTRA)
CFLAGS =-O2 -DSTDC_HEADERS $(CFLAGS_PROC)
ARFLAGS =rc
FONTC =$(TOPDIR)/drivers/video/font_acorn_8x8.c
HEAD = head.o
OBJS = misc.o
SYSTEM = $(TOPDIR)/vmlinux
CFLAGS = -O2 -DSTDC_HEADERS $(CFLAGS_PROC)
FONTC = $(TOPDIR)/drivers/video/font_acorn_8x8.c
ZLDFLAGS = -X -T vmlinux.lds
#
# Architecture dependencies
#
ifeq ($(CONFIG_ARCH_ACORN),y)
OBJS += ll_char_wr.o font.o
OBJS += ll_char_wr.o font.o
endif
ifeq ($(CONFIG_CPU_26),y)
ZTEXTADDR = 0x02080000
endif
ifeq ($(CONFIG_ARCH_RPC),y)
ZTEXTADDR = 0x10008000
endif
ifeq ($(CONFIG_ARCH_EBSA110),y)
ZTEXTADDR = 0x00008000
endif
ifeq ($(CONFIG_FOOTBRIDGE),y)
ZTEXTADDR = 0x00008000
endif
ifeq ($(CONFIG_ARCH_NETWINDER),y)
OBJS += head-netwinder.o
endif
ifeq ($(NEW_LINKER),y)
BINFMT := elf32-littlearm
ifeq ($(CONFIG_ARCH_NEXUSPCI),y)
HEAD = head-nexuspci.o
OBJS += $(TOPDIR)/arch/arm/lib/ll_char_wr_scc.o
ZTEXTADDR = 0x40200000
ZRELADDR = 0x40008000
endif
ifeq ($(CONFIG_ARCH_SA110),y)
ifeq ($(CONFIG_SA1100_VICTOR),y)
HEAD = head-victor.o
ZTEXTADDR = 0x00002000
ZBSSADDR = 0xc0100000
else
BINFMT := elf32-arm
ZTEXTADDR = 0xc0008000
endif
ZRELADDR = 0xc0008000
endif
#
# If you don't define ZRELADDR above,
# then it defaults to ZTEXTADDR
#
ifeq ($(ZRELADDR),)
ZRELADDR = $(ZTEXTADDR)
endif
SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/LOAD_ADDR/$(ZRELADDR)/;
ifneq ($(ZBSSADDR),)
SEDFLAGS += s/BSS_START/$(ZBSSADDR)/
else
SEDFLAGS += s/BSS_START/ALIGN(4)/
endif
all: vmlinux
vmlinux: $(OBJS) piggy.o
$(LD) $(ZLINKFLAGS) -o vmlinux $(OBJS) piggy.o
vmlinux: $(HEAD) $(OBJS) piggy.o vmlinux.lds
$(LD) $(ZLDFLAGS) $(HEAD) $(OBJS) piggy.o $(GCCLIB) -o vmlinux
$(HEAD): $(HEAD:.o=.S)
$(CC) -traditional -DLOADADDR=$(ZRELADDR) -c $(HEAD:.o=.S)
$(CC) -traditional -c $(HEAD:.o=.S)
piggy.o: $(SYSTEM)
tmppiggy=_tmp_$$$$piggy; \
rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk; \
$(OBJCOPY) $(SYSTEM) $$tmppiggy; \
gzip -f -9 < $$tmppiggy > $$tmppiggy.gz; \
echo "SECTIONS { .data : { input_len = .; LONG(input_data_end - input_data) input_data = .; *(.data) input_data_end = .; }}" > $$tmppiggy.lnk; \
$(LD) -r -o piggy.o -b binary $$tmppiggy.gz -b $(BINFMT) -T $$tmppiggy.lnk; \
rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk;
$(OBJCOPY) $(SYSTEM) piggy
gzip -9 < piggy > piggy.gz
$(LD) -r -o $@ -b binary piggy.gz
rm -f piggy piggy.gz
font.o: $(FONTC)
$(CC) -Dstatic= -c -o $@ $(FONTC)
clean:; rm -f vmlinux core
vmlinux.lds: vmlinux.lds.in
@sed "$(SEDFLAGS)" < vmlinux.lds.in > $@
clean:; rm -f vmlinux core piggy*
.PHONY: vmlinux.lds clean
misc.o: misc.c $(TOPDIR)/include/asm/arch/uncompress.h $(TOPDIR)/lib/inflate.c
.section ".start", #alloc, #execinstr
adr r2, 1f
ldmdb r2, {r7, r8}
and r3, r2, #0xc000
teq r3, #0x8000
beq 2f
bic r3, r2, #0xc000
orr r3, r3, #0x8000
mov r0, r3
mov r4, #64
sub r5, r8, r7
b 1f
.word _start
.word __bss_start
1:
.rept 4
ldmia r2!, {r6, r7, r8, r9}
stmia r3!, {r6, r7, r8, r9}
.endr
subs r4, r4, #64
bcs 1b
movs r4, r5
mov r5, #0
movne pc, r0
mov r0, #0
2:
/*
* linux/arch/arm/boot/compressed/head-victor.S
*
* Copyright (C) 1998 Nicolas Pitre <nico@visuaide.com>
*/
#include <linux/linkage.h>
.text
.globl _start
_start:
@ just in case we still use an a.out loader...
nop
nop
nop
nop
nop
nop
nop
nop
@ load different addresses
adr r2, LC0
ldmia r2, {r4, r5, r6, sp}
@ clear BSS
mov r2, #0
1: str r2, [r5], #4
cmp r5, r6
blt 1b
@ uncompress the kernel
mov r8, r0 @ save cmdline ptr
mov r0, r4 @ where to put uncompressed data
add r1, r6, #31
bic r1, r1, #31 @ free memory space
add r2, r1, #65536 @ end of free mem space
bl SYMBOL_NAME(decompress_kernel)
mov r0, r8 @ retrieve cmdline ptr
mov pc, r4 @ call via EXEC entry
LC0: .word _load_addr
.word __bss_start
.word SYMBOL_NAME(_end)
.word SYMBOL_NAME(user_stack)+4096
/*
* linux/arch/arm/boot/compressed/head.S
*
* Copyright (C) 1996,1997,1998 Russell King
* Copyright (C) 1996-1999 Russell King
*/
#include <linux/linkage.h>
.text
.section ".start", #alloc, #execinstr
/*
* sort out different calling conventions
*/
.align
.globl _start
_start:
start: mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
start:
.type start,#function
.rept 8
mov r0, r0
.endr
b 1f
.word 0x016f2818 @ Magic numbers to help the loader
.word _start
.word 0x016f2818 @ Magic numbers to help the loader
.word start
1:
/*
* some architecture specific code can
* be inserted by the linker here
*/
.text
1: teq r0, #0
beq 2f
mov r4, #0x02000000
add r4, r4, #0x7C000
mov r3, #0x4000
sub r3, r3, #4
1: ldmia r0!, {r5 - r12}
stmia r4!, {r5 - r12}
subs r3, r3, #32
bpl 1b
2: adr r2, LC0
ldmia r2, {r2, r3, r4, r5, r6, sp}
add r2, r2, #3
add r3, r3, #3
add sp, sp, #3
bic r2, r2, #3
bic r3, r3, #3
bic sp, sp, #3
adr r7, start
sub r6, r7, r6
/*
* Relocate pointers
*/
add r2, r2, r6
add r3, r3, r6
add r5, r5, r6
add sp, sp, r6
/*
* Clear zero-init
*/
mov r6, #0
1: str r6, [r2], #4
bne 1b
mov r7, r1 @ save architecture ID
mrc p15, 0, r6, c0, c0 @ get processor ID
adr r2, LC0
ldmia r2, {r2, r3, r4, r5, sp}
mov r0, #0
1: str r0, [r2], #4 @ clear bss
str r0, [r2], #4
str r0, [r2], #4
str r0, [r2], #4
cmp r2, r3
blt 1b
str r1, [r5] @ save architecture
/*
* Uncompress the kernel
*/
mov r1, #0x8000
add r3, r2, r1, lsl #1 @ Add 64k for malloc
sub r1, r1, #1
add r3, r3, r1
bic r5, r3, r1 @ decompress kernel to after end of the compressed
mov r1, sp @ malloc space above stack
add r2, sp, #0x10000 @ 64k max
teq r4, r5 @ will we overwrite ourselves?
moveq r5, r2
movne r5, r4
mov r0, r5
mov r1, r2
mov r2, r0
mov r3, r7
bl SYMBOL_NAME(decompress_kernel)
add r0, r0, #7
bic r2, r0, #7
teq r4, r5 @ do we need to relocate
beq call_kernel @ the kernel?
add r0, r0, #127
bic r0, r0, #127 @ align the kernel length
/*
* Now move the kernel to the correct location (r5 -> r4, len r0)
* r0 = decompressed kernel length
* r1-r3 = unused
* r4 = kernel execution address
* r5 = decompressed kernel start
* r6 = processor ID
* r7 = architecture ID
* r8-r14 = unused
*/
mov r0, r4 @ r0 = start of real kernel
mov r1, r5 @ r1 = start of kernel image
add r3, r5, r2 @ r3 = end of kernel
adr r4, movecode
adr r5, movecodeend
1: ldmia r4!, {r6 - r12, lr}
stmia r3!, {r6 - r12, lr}
cmp r4, r5
add r1, r5, r0 @ end of decompressed kernel
adr r2, reloc_start
adr r3, reloc_end
1: ldmia r2!, {r8 - r13} @ copy relocation code
stmia r1!, {r8 - r13}
ldmia r2!, {r8 - r13}
stmia r1!, {r8 - r13}
cmp r2, r3
blt 1b
mrc p15, 0, r5, c0, c0
eor r5, r5, #0x44 << 24
eor r5, r5, #0x01 << 16
eor r5, r5, #0xa1 << 8
movs r5, r5, lsr #4
mov r5, #0
mcreq p15, 0, r5, c7, c5, 0 @ flush I cache
ldr r5, LC0 + 12 @ get architecture
ldr r5, [r5]
add pc, r1, r2 @ Call move code
eor r1, r6, #0x44 << 24 @ SA-110?
eor r1, r1, #0x01 << 16
eor r1, r1, #0xa1 << 8
movs r1, r1, lsr #4
mcreq p15, 0, r1, c7, c7, 0 @ flush I & D-cache
mcreq p15, 0, r1, c7, c10, 4 @ drain WB
add pc, r5, r0 @ call relocation code
/*
* r0 = length, r1 = to, r2 = from
* r0 = decompressed kernel length
* r1-r3 = unused
* r4 = kernel execution address
* r5 = decompressed kernel start
* r6 = processor ID
* r7 = architecture ID
* r8-r14 = unused
*/
movecode: add r3, r1, r2
mov r4, r0
1: ldmia r1!, {r6 - r12, lr}
stmia r0!, {r6 - r12, lr}
cmp r1, r3
reloc_start: add r8, r5, r0
#if 0
mov r0, r6
mov r1, #8
bl phex
mov r0, #':'
bl putc
mov r0, r5
mov r1, #8
bl phex
mov r0, #'-'
bl putc
mov r0, r8
mov r1, #8
bl phex
mov r0, #'>'
bl putc
mov r0, r4
mov r1, #8
bl phex
mov r0, #'\n'
bl putc
#endif
mov r0, r8
mov r1, r4
1:
.rept 4
ldmia r5!, {r2, r3, r8 - r13} @ relocate kernel
stmia r1!, {r2, r3, r8 - r13}
.endr
cmp r5, r0
blt 1b
mrc p15, 0, r0, c0, c0
eor r0, r0, #0x44 << 24
#if 0
mov r8, r0
mov r0, r5
mov r1, #8
bl phex
mov r0, #'-'
bl putc
mov r0, r8
mov r1, #8
bl phex
mov r0, #'\n'
bl putc
mov r0, r4
bl memdump
#endif
eor r0, r6, #0x44 << 24 @ SA-110?
eor r0, r0, #0x01 << 16
eor r0, r0, #0xa1 << 8
movs r0, r0, lsr #4
mcreq p15, 0, r0, c7, c7, 0 @ flush I cache
mcreq p15, 0, r1, c7, c10, 4 @ drain WB
call_kernel: mov r0, #0
mov r1, r7 @ restore architecture number
mov pc, r4 @ call kernel
phexbuf: .space 12
phex: adr r3, phexbuf
mov r2, #0
strb r2, [r3, r1]
1: subs r1, r1, #1
movmi r0, r3
bmi puts
and r2, r0, #15
mov r0, r0, lsr #4
cmp r2, #10
addge r2, r2, #7
add r2, r2, #'0'
strb r2, [r3, r1]
b 1b
puts: mov r3, #0x7c000000
1: ldrb r2, [r0], #1
teq r2, #0
moveq pc, lr
2: strb r2, [r3, #0x3f8]
mov r1, #0x00020000
3: subs r1, r1, #1
bne 3b
teq r2, #'\n'
moveq r2, #'\r'
beq 2b
teq r0, #0
bne 1b
mov pc, lr
putc:
mov r2, r0
mov r0, #0
mcreq p15, 0, r0, c7, c5, 0 @ flush I cache
mov r1, r5 @ call kernel correctly
mov pc, r4 @ call via EXEC entry
movecodeend:
LC0: .word SYMBOL_NAME(_edata)
.word SYMBOL_NAME(_end)
.word LOADADDR
.word SYMBOL_NAME(architecture)
.word start
.word SYMBOL_NAME(user_stack)+4096
.align
mov r3, #0x7c000000
b 2b
.bss
SYMBOL_NAME(architecture):
.space 4
memdump: mov r12, r0
mov r10, lr
mov r1, #8
bl phex
mov r0, #'\n'
bl putc
mov r11, #0
2: mov r0, r11, lsl #2
mov r1, #4
bl phex
mov r0, #':'
bl putc
1: mov r0, #' '
bl putc
ldr r0, [r12, r11, lsl #2]
mov r1, #8
bl phex
and r0, r11, #7
teq r0, #3
moveq r0, #' '
bleq putc
and r0, r11, #7
add r11, r11, #1
teq r0, #7
bne 1b
mov r0, #'\n'
bl putc
cmp r11, #64
blt 2b
mov pc, r10
reloc_end:
LC0: .word __bss_start
.word _end
.word _load_addr
.word _start
.word user_stack+4096
.align
.section ".stack"
user_stack: .space 4096
......@@ -7,8 +7,17 @@
* malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
*
* Modified for ARM Linux by Russell King
*
* Nicolas Pitre <nico@visuaide.com> 1999/04/14 :
* For this code to run directly from Flash, all constant variables must
* be marked with 'const' and all other variables initialized at run-time
* only. This way all non constant variables will end up in the bss segment,
* which should point to addresses in RAM and cleared to 0 on start.
* This allows for a much quicker boot time.
*/
unsigned int __machine_arch_type;
#include <asm/uaccess.h>
#include <asm/arch/uncompress.h>
#include <asm/proc/uncompress.h>
......@@ -22,7 +31,7 @@
/*
* Optimised C version of memzero for the ARM.
*/
extern __inline__ __ptr_t __memzero (__ptr_t s, size_t n)
void __memzero (__ptr_t s, size_t n)
{
union { void *vp; unsigned long *ulp; unsigned char *ucp; } u;
int i;
......@@ -62,11 +71,8 @@ extern __inline__ __ptr_t __memzero (__ptr_t s, size_t n)
if (n & 1)
*u.ucp++ = 0;
return s;
}
#define memzero(s,n) __memzero(s,n)
extern __inline__ __ptr_t memcpy(__ptr_t __dest, __const __ptr_t __src,
size_t __n)
{
......@@ -157,11 +163,11 @@ static void gzip_mark(void **);
static void gzip_release(void **);
extern char input_data[];
extern int input_len;
extern char input_data_end[];
static uch *output_data;
static ulg output_ptr;
static ulg bytes_out = 0;
static ulg bytes_out;
static void *malloc(int size);
static void free(void *where);
......@@ -226,13 +232,14 @@ static void gzip_release(void **ptr)
* Fill the input buffer. This is called only when the buffer is empty
* and at least one byte is really needed.
*/
int fill_inbuf()
int fill_inbuf(void)
{
if (insize != 0)
error("ran out of input data\n");
inbuf = input_data;
insize = input_len;
insize = &input_data_end[0] - &input_data[0];
inptr = 1;
return inbuf[0];
}
......@@ -241,7 +248,7 @@ int fill_inbuf()
* Write the output window window[0..outcnt-1] and update crc and bytes_out.
* (Used for the decompressed data only.)
*/
void flush_window()
void flush_window(void)
{
ulg c = crc;
unsigned n;
......@@ -257,6 +264,7 @@ void flush_window()
bytes_out += (ulg)outcnt;
output_ptr += (ulg)outcnt;
outcnt = 0;
puts(".");
}
static void error(char *x)
......@@ -270,21 +278,19 @@ static void error(char *x)
while(1); /* Halt */
}
#define STACK_SIZE (4096)
ulg user_stack [STACK_SIZE];
#ifndef STANDALONE_DEBUG
ulg decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p)
ulg
decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p,
int arch_id)
{
free_mem_ptr = free_mem_ptr_p;
free_mem_ptr_end = free_mem_ptr_end_p;
proc_decomp_setup ();
arch_decomp_setup ();
output_data = (uch *)output_start; /* Points to kernel start */
free_mem_ptr = free_mem_ptr_p;
free_mem_ptr_end = free_mem_ptr_end_p;
__machine_arch_type = arch_id;
output_data = (uch *)output_start; /* Points to kernel start */
proc_decomp_setup();
arch_decomp_setup();
makecrc();
puts("Uncompressing Linux...");
......
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = LOAD_ADDR;
_load_addr = .;
. = TEXT_START;
_text = .;
.text : {
_start = .;
head.o(.start)
*(.start)
head.o(.text)
*(.text)
*(.fixup)
*(.gnu.warning)
input_data = .;
piggy.o
input_data_end = .;
. = ALIGN(4);
}
_etext = .;
.data : {
*(.data)
}
_edata = .;
. = BSS_START;
__bss_start = .;
.bss : {
*(.bss)
}
_end = .;
.stack : {
*(.stack)
}
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
}
......@@ -20,7 +20,7 @@ choice 'ARM system type' \
RiscPC CONFIG_ARCH_RPC \
EBSA-110 CONFIG_ARCH_EBSA110 \
FootBridge-based CONFIG_FOOTBRIDGE" RiscPC
# SA1100-based CONFIG_ARCH_SA1100
if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
bool 'FootBridge in HOST mode' CONFIG_HOST_FOOTBRIDGE
if [ "$CONFIG_HOST_FOOTBRIDGE" = "y" ]; then
......@@ -31,9 +31,9 @@ if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
fi
if [ "$CONFIG_HOST_FOOTBRIDGE" = "y" ]; then
bool ' Include support for Intel EBSA285' CONFIG_ARCH_EBSA285
bool ' Include support for Chalice CATS boards' CONFIG_CATS
bool ' Include support for Corel NetWinder' CONFIG_ARCH_NETWINDER
bool ' Include support for EBSA285' CONFIG_ARCH_EBSA285
bool ' Include support for CATS' CONFIG_CATS
bool ' Include support for NetWinder' CONFIG_ARCH_NETWINDER
fi
if [ "$CONFIG_ADDIN_FOOTBRIDGE" = "y" ]; then
......@@ -42,6 +42,18 @@ if [ "$CONFIG_ADDIN_FOOTBRIDGE" = "y" ]; then
define_bool CONFIG_ARCH_CO285 y
fi
if [ "$CONFIG_ARCH_SA1100" = "y" ]; then
define_bool CONFIG_CPU_SA1100 y
choice 'SA1100 implementation' \
"Brutus CONFIG_SA1100_BRUTUS \
empeg CONFIG_SA1100_EMPEG \
Itsy CONFIG_SA1100_ITSY \
LART CONFIG_SA1100_LART \
PLEB CONFIG_SA1100_PLEB \
Victor CONFIG_SA1100_VICTOR \
Tifon CONFIG_SA1100_TIFON" Brutus
fi
#
# Select various configuration options depending on the machine type
# Easy check for Acorn-style architectures
......@@ -76,6 +88,7 @@ else
# Select CPU and optimisation dependent on architecture
#
if [ "$CONFIG_ARCH_EBSA110" = "y" -o \
"$CONFIG_ARCH_SA1100" = "y" -o \
"$CONFIG_FOOTBRIDGE" = "y" -o \
"$CONFIG_ARCH_NEXUSPCI" = "y" ]; then
define_bool CONFIG_CPU_32v4 y
......@@ -139,21 +152,10 @@ if [ "$CONFIG_CPU_32" = "y" ]; then
tristate 'RISC OS personality' CONFIG_ARTHUR
fi
tristate 'Parallel port support' CONFIG_PARPORT
if [ "$CONFIG_PARPORT" != "n" ]; then
if [ "$CONFIG_ARCH_ARC" = "y" ]; then
dep_tristate ' Archimedes hardware' CONFIG_PARPORT_ARC $CONFIG_PARPORT
fi
dep_tristate ' PC-style hardware' CONFIG_PARPORT_PC $CONFIG_PARPORT
# If exactly one hardware type is selected then parport will optimise away
# support for loading any others. Defeat this if the user is keen.
if [ "$CONFIG_PARPORT_PC" = "n" -o "$CONFIG_PARPORT_ARC" = "n" ]; then
if [ "$CONFIG_PARPORT_PC" != "n" -o "$CONFIG_PARPORT_ARC" != "n" ]; then
bool ' Support foreign hardware' CONFIG_PARPORT_OTHER
fi
fi
fi
source drivers/parport/Config.in
if [ "$CONFIG_ARCH_EBSA110" = "y" -o \
"$CONFIG_ARCH_SA1100" = "y" -o \
"$CONFIG_ARCH_NETWINDER" = "y" -o \
"$CONFIG_CATS" = "y" ]; then
string 'Initial kernel command string' CONFIG_CMDLINE
......@@ -165,10 +167,10 @@ if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \
bool 'Timer and CPU usage LEDs' CONFIG_LEDS
if [ "$CONFIG_LEDS" = "y" ]; then
if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \
"$CONFIG_ARCH_EBSA285" = "y" -o \
"$CONFIG_ARCH_EBSA285" = "y" -o \
"$CONFIG_ARCH_CO285" = "y" ]; then
bool ' Timer LED' CONFIG_LEDS_TIMER
bool ' CPU usage LED' CONFIG_LEDS_CPU
bool ' Timer LED' CONFIG_LEDS_TIMER
bool ' CPU usage LED' CONFIG_LEDS_CPU
fi
fi
fi
......@@ -186,11 +188,11 @@ fi
source drivers/char/Config.in
if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
if [ "$CONFIG_MOUSE" = "y" ]; then
if [ "$CONFIG_BUSMOUSE" = "y" ]; then
if [ "$CONFIG_ARCH_RPC" != "y" ]; then
define_bool CONFIG_KBDMOUSE y
define_bool CONFIG_KBDMOUSE y
else
define_bool CONFIG_RPCMOUSE y
define_bool CONFIG_RPCMOUSE y
fi
fi
fi
......@@ -230,7 +232,7 @@ fi
#
# tristate 'ISDN support' CONFIG_ISDN
# if [ "$CONFIG_ISDN" != "n" ]; then
# source drivers/isdn/Config.in
# source drivers/isdn/Config.in
# fi
# endmenu
......@@ -267,17 +269,17 @@ bool 'Include debugging information in kernel binary' CONFIG_DEBUG_INFO
#bool 'Debug kmalloc/kfree' CONFIG_DEBUG_MALLOC
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
if [ "$CONFIG_CPU_26" = "y" ]; then
bool 'Disable pgtable cache (EXPERIMENTAL)' CONFIG_NO_PGT_CACHE
fi
# These options are only for real kernel hackers
# who want to get their hands dirty.
bool 'Kernel low-level debugging functions' CONFIG_DEBUG_LL
if [ "$CONFIG_DEBUG_LL" = "y" ]; then
if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
bool 'Kernel low-level debugging messages via DC21285 port' CONFIG_DEBUG_DC21285_PORT
fi
fi
if [ "$CONFIG_CPU_26" = "y" ]; then
bool 'Disable pgtable cache (EXPERIMENTAL)' CONFIG_NO_PGT_CACHE
fi
# These options are only for real kernel hackers
# who want to get their hands dirty.
bool 'Kernel low-level debugging functions' CONFIG_DEBUG_LL
if [ "$CONFIG_DEBUG_LL" = "y" ]; then
if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
bool 'Kernel low-level debugging messages via DC21285 port' CONFIG_DEBUG_DC21285_PORT
fi
fi
fi
endmenu
#
# Automatically generated make config: don't edit
#
CONFIG_ARM=y
#
# System and processor type
#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_FOOTBRIDGE is not set
CONFIG_ARCH_SA1100=y
CONFIG_CPU_SA1100=y
CONFIG_SA1100_BRUTUS=y
# CONFIG_SA1100_EMPEG is not set
# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_TIFON is not set
# CONFIG_ARCH_ACORN is not set
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
CONFIG_CPU_32v4=y
CONFIG_CPU_SA110=y
# CONFIG_ISA_DMA is not set
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_ALIGNMENT_TRAP is not set
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
# CONFIG_KMOD is not set
#
# General setup
#
# CONFIG_NET is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_NWFPE=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ARTHUR is not set
# CONFIG_PARPORT is not set
CONFIG_CMDLINE=""
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_LAN is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_IDE is not set
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_ONLY is not set
# CONFIG_BLK_CPQ_DA is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
# CONFIG_BLK_DEV_XD is not set
CONFIG_PARIDE_PARPORT=y
# CONFIG_PARIDE is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_HD is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SERIAL_SA1100=y
# CONFIG_SERIAL_SA1100_CONSOLE is not set
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=32
#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
# CONFIG_QIC02_TAPE is not set
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
#
# Video For Linux
#
# CONFIG_VIDEO_DEV is not set
#
# Joystick support
#
# CONFIG_JOYSTICK is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_DRM is not set
#
# USB drivers - not for the faint of heart
#
# CONFIG_USB is not set
#
# Console drivers
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FB_SA1100=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB2=y
CONFIG_FBCON_CFB4=y
CONFIG_FBCON_CFB8=y
CONFIG_FBCON_CFB16=y
CONFIG_FBCON_FONTWIDTH8_ONLY=y
CONFIG_FBCON_FONTS=y
CONFIG_FONT_8x8=y
# CONFIG_FONT_8x16 is not set
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
#
# SCSI support
#
# CONFIG_SCSI is not set
#
# Filesystems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_UDF_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_NLS is not set
#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_INFO=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_DEBUG_LL is not set
#
# Example empeg-car kernel configuration file.
#
CONFIG_ARM=y
#
# System and processor type
#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_FOOTBRIDGE is not set
CONFIG_ARCH_SA1100=y
CONFIG_CPU_SA1100=y
# CONFIG_SA1100_BRUTUS is not set
CONFIG_SA1100_EMPEG=y
# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_EMPEG_HENRY is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_ISA_DMA is not set
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
# CONFIG_CPU_ARM2 is not set
# CONFIG_CPU_ARM3 is not set
# CONFIG_CPU_ARM6 is not set
# CONFIG_CPU_ARM7 is not set
CONFIG_CPU_SA110=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_ALIGNMENT_TRAP is not set
# CONFIG_TEXT_SECTIONS is not set
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
# CONFIG_KMOD is not set
#
# General setup
#
CONFIG_NET=y
# CONFIG_SYSVIPC is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_NWFPE=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ARTHUR is not set
# CONFIG_PARPORT is not set
CONFIG_CMDLINE=""
#
# Plug and Play support
#
# CONFIG_PNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
CONFIG_BLK_DEV_IDE=y
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
# CONFIG_BLK_DEV_XD is not set
CONFIG_PARIDE_PARPORT=y
# CONFIG_PARIDE is not set
# CONFIG_BLK_DEV_HD is not set
#
# Character devices
#
# CONFIG_VT is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_UNIX98_PTYS is not set
# CONFIG_MOUSE is not set
# CONFIG_QIC02_TAPE is not set
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
CONFIG_EMPEG_IR=y
CONFIG_EMPEG_USB=y
#
# Video For Linux
#
CONFIG_VIDEO_DEV=y
# CONFIG_RADIO_RTRACK is not set
# CONFIG_RADIO_RTRACK2 is not set
# CONFIG_RADIO_AZTECH is not set
# CONFIG_RADIO_CADET is not set
# CONFIG_RADIO_MIROPCM20 is not set
# CONFIG_RADIO_GEMTEK is not set
CONFIG_RADIO_EMPEG=y
# CONFIG_VIDEO_BT848 is not set
# CONFIG_VIDEO_PMS is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_RADIO_SF16FMI is not set
# CONFIG_RADIO_TYPHOON is not set
# CONFIG_RADIO_ZOLTRIX is not set
#
# Joystick support
#
# CONFIG_JOYSTICK is not set
# CONFIG_DTLK is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
#
# Networking options
#
# CONFIG_PACKET is not set
# CONFIG_NETLINK is not set
# CONFIG_FIREWALL is not set
# CONFIG_FILTER is not set
# CONFIG_UNIX is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_IP_ROUTER is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_ALIAS is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_RARP is not set
# CONFIG_SKB_LARGE is not set
# CONFIG_IPV6 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_BRIDGE is not set
# CONFIG_LLC is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
# CONFIG_CPU_IS_SLOW is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA subsystem support
#
# CONFIG_IRDA is not set
#
# Network device support
#
CONFIG_NETDEVICES=y
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_EQUALIZER is not set
# CONFIG_NET_ETHERNET is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_DLCI is not set
CONFIG_PPP=y
# CONFIG_SLIP is not set
# CONFIG_NET_RADIO is not set
# CONFIG_TR is not set
# CONFIG_SHAPER is not set
# CONFIG_HOSTESS_SV11 is not set
# CONFIG_COSA is not set
# CONFIG_RCPCI is not set
#
# SCSI support
#
# CONFIG_SCSI is not set
#
# Filesystems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
# CONFIG_CODA_FS is not set
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_SUNRPC is not set
# CONFIG_LOCKD is not set
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
#
# Partition Types
#
# CONFIG_OSF_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_SGI_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ACORN_PARTITION is not set
# CONFIG_NLS is not set
#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_USER_BACKTRACE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_DEBUG_LL is not set
......@@ -17,22 +17,18 @@ CONFIG_ARCH_EBSA285=y
# CONFIG_CATS is not set
CONFIG_ARCH_NETWINDER=y
# CONFIG_ARCH_ACORN is not set
CONFIG_PCI=y
CONFIG_ISA_DMA=y
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
# CONFIG_CPU_ARM2 is not set
# CONFIG_CPU_ARM3 is not set
# CONFIG_CPU_ARM6 is not set
# CONFIG_CPU_ARM7 is not set
CONFIG_CPU_32v4=y
CONFIG_CPU_SA110=y
CONFIG_PCI=y
CONFIG_ISA_DMA=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_ALIGNMENT_TRAP is not set
# CONFIG_TEXT_SECTIONS is not set
#
# Loadable module support
......@@ -55,15 +51,35 @@ CONFIG_BINFMT_ELF=y
# CONFIG_ARTHUR is not set
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_PC_FIFO=y
# CONFIG_PARPORT_PC_PCMCIA is not set
# CONFIG_PARPORT_ARC is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
# CONFIG_PARPORT_ATARI is not set
# CONFIG_PARPORT_SUNBPP is not set
# CONFIG_PARPORT_OTHER is not set
CONFIG_PARPORT_1284=y
CONFIG_CMDLINE="root=/dev/hda2 ro mem=32M parport=0x378,7 ide0=autotune"
CONFIG_LEDS=y
CONFIG_LEDS_TIMER=y
# CONFIG_LEDS_CPU is not set
#
# Plug and Play support
# I2O device support
#
# CONFIG_PNP is not set
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_LAN is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Plug and Play configuration
#
CONFIG_PNP=y
CONFIG_ISAPNP=y
#
# Block devices
......@@ -76,6 +92,7 @@ CONFIG_BLK_DEV_IDE=y
#
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
......@@ -136,6 +153,7 @@ CONFIG_PARIDE_KBIC=m
CONFIG_PARIDE_KTTI=m
CONFIG_PARIDE_ON20=m
CONFIG_PARIDE_ON26=m
CONFIG_BLK_DEV_IDE_MODES=y
# CONFIG_BLK_DEV_HD is not set
#
......@@ -149,15 +167,14 @@ CONFIG_SERIAL_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_UNIX98_PTYS is not set
CONFIG_PRINTER=m
CONFIG_PRINTER_READBACK=y
CONFIG_MOUSE=y
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
#
# Mice
#
# CONFIG_ATIXL_BUSMOUSE is not set
# CONFIG_BUSMOUSE is not set
# CONFIG_MS_BUSMOUSE is not set
CONFIG_MOUSE=y
CONFIG_PSMOUSE=y
# CONFIG_82C710_MOUSE is not set
# CONFIG_PC110_PAD is not set
......@@ -172,6 +189,8 @@ CONFIG_WATCHDOG=y
CONFIG_SOFT_WATCHDOG=y
# CONFIG_PCWATCHDOG is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_21285_WATCHDOG is not set
CONFIG_977_WATCHDOG=m
CONFIG_DS1620=y
CONFIG_NWBUTTON=y
CONFIG_NWBUTTON_REBOOT=y
......@@ -189,18 +208,44 @@ CONFIG_RTC=y
#
# CONFIG_JOYSTICK is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
#
# USB drivers - not for the faint of heart
#
CONFIG_USB=m
# CONFIG_USB_UHCI is not set
CONFIG_USB_OHCI=m
CONFIG_USB_OHCI_DEBUG=y
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_OHCI_VROOTHUB=y
# CONFIG_USB_DEBUG_ISOC is not set
CONFIG_USB_HUB=m
CONFIG_USB_MOUSE=m
CONFIG_USB_KBD=m
CONFIG_USB_AUDIO=m
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m
# CONFIG_USB_CPIA is not set
CONFIG_USB_SCSI=m
CONFIG_USB_SCSI_DEBUG=m
# CONFIG_USB_EZUSB is not set
# CONFIG_USB_USS720 is not set
CONFIG_USB_PROC=y
#
# Console drivers
#
CONFIG_VGA_CONSOLE=y
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_CLGEN is not set
# CONFIG_FB_PM2 is not set
CONFIG_FB_CYBER2000=y
# CONFIG_FB_MATROX is not set
......@@ -220,6 +265,7 @@ CONFIG_FBCON_CFB24=y
# CONFIG_FBCON_IPLAN2P4 is not set
# CONFIG_FBCON_IPLAN2P8 is not set
# CONFIG_FBCON_MAC is not set
# CONFIG_FBCON_VGA_PLANES is not set
CONFIG_FBCON_VGA=y
# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
CONFIG_FBCON_FONTS=y
......@@ -235,8 +281,9 @@ CONFIG_FONT_ACORN_8x8=y
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK is not set
# CONFIG_FIREWALL is not set
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
......@@ -254,15 +301,17 @@ CONFIG_IP_ALIAS=y
#
# (it is safe to leave these untouched)
#
# CONFIG_INET_RARP is not set
CONFIG_SKB_LARGE=y
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
#
#
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_BRIDGE is not set
......@@ -271,7 +320,6 @@ CONFIG_SKB_LARGE=y
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
# CONFIG_CPU_IS_SLOW is not set
#
# QoS and/or fair queueing
......@@ -284,7 +332,7 @@ CONFIG_SKB_LARGE=y
# CONFIG_HAMRADIO is not set
#
# IrDA subsystem support
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
......@@ -292,9 +340,18 @@ CONFIG_SKB_LARGE=y
# Network device support
#
CONFIG_NETDEVICES=y
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_EQUALIZER is not set
# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_ARM_AM79C961A is not set
CONFIG_NET_VENDOR_3COM=y
......@@ -309,11 +366,12 @@ CONFIG_VORTEX=y
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_RTL8139 is not set
# CONFIG_SIS900 is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_ACENIC is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_EISA=y
# CONFIG_PCNET32 is not set
# CONFIG_ACENIC is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
......@@ -332,23 +390,32 @@ CONFIG_NE2K_PCI=y
# CONFIG_NET_POCKET is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_DLCI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
#
# CCP compressors for PPP are only built as modules.
#
CONFIG_PPP_ASYNC=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
# CONFIG_NET_RADIO is not set
#
# Token ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
#
# Wan interfaces
#
# CONFIG_HOSTESS_SV11 is not set
# CONFIG_COSA is not set
# CONFIG_RCPCI is not set
# CONFIG_SEALEVEL_4021 is not set
# CONFIG_DLCI is not set
#
# SCSI support
......@@ -359,8 +426,10 @@ CONFIG_SLIP_MODE_SLIP6=y
# Sound
#
CONFIG_SOUND=m
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_ES1370 is not set
# CONFIG_SOUND_ES1371 is not set
# CONFIG_SOUND_ESSSOLO1 is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
......@@ -410,6 +479,7 @@ CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_UMSDOS_FS is not set
CONFIG_VFAT_FS=m
# CONFIG_EFS_FS is not set
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
# CONFIG_MINIX_FS is not set
......@@ -438,12 +508,17 @@ CONFIG_LOCKD=y
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_OSF_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_ACORN_PARTITION=y
CONFIG_ACORN_PARTITION_ADFS=y
# CONFIG_ACORN_PARTITION_ICS is not set
......@@ -479,6 +554,7 @@ CONFIG_NLS_ISO8859_2=m
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=m
# CONFIG_NLS_KOI8_R is not set
......@@ -487,7 +563,7 @@ CONFIG_NLS_ISO8859_15=m
#
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_USER is not set
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_INFO is not set
CONFIG_MAGIC_SYSRQ=y
# CONFIG_DEBUG_LL is not set
#
# Automatically generated make config: don't edit
#
CONFIG_ARM=y
#
# System and processor type
#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_FOOTBRIDGE is not set
CONFIG_ARCH_SA1100=y
CONFIG_CPU_SA1100=y
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_EMPEG is not set
# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_PLEB is not set
CONFIG_SA1100_VICTOR=y
# CONFIG_VICTOR_BOARD1 is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_ISA_DMA is not set
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
# CONFIG_CPU_ARM2 is not set
# CONFIG_CPU_ARM3 is not set
# CONFIG_CPU_ARM6 is not set
# CONFIG_CPU_ARM7 is not set
CONFIG_CPU_SA110=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
# CONFIG_ALIGNMENT_TRAP is not set
# CONFIG_TEXT_SECTIONS is not set
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
# CONFIG_KMOD is not set
#
# General setup
#
# CONFIG_NET is not set
# CONFIG_SYSVIPC is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_NWFPE=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_ARTHUR is not set
# CONFIG_PARPORT is not set
CONFIG_CMDLINE=""
#
# Plug and Play support
#
# CONFIG_PNP is not set
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_IDEDISK is not set
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_IDE_CHIPSETS is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_XD is not set
CONFIG_PARIDE_PARPORT=y
# CONFIG_PARIDE is not set
# CONFIG_BLK_DEV_HD is not set
#
# Character devices
#
# CONFIG_VT is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_UNIX98_PTYS is not set
# CONFIG_MOUSE is not set
# CONFIG_QIC02_TAPE is not set
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
#
# Video For Linux
#
# CONFIG_VIDEO_DEV is not set
#
# Joystick support
#
# CONFIG_JOYSTICK is not set
# CONFIG_DTLK is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
#
# SCSI support
#
# CONFIG_SCSI is not set
#
# Filesystems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
# CONFIG_MINIX_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_PROC_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Partition Types
#
# CONFIG_OSF_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
# CONFIG_MSDOS_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ACORN_PARTITION is not set
CONFIG_NLS=y
#
# Native Language Support
#
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
CONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
#
# Kernel hacking
#
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_DEBUG_LL is not set
......@@ -55,7 +55,7 @@ CONFIG_BINFMT_ELF=y
# CONFIG_ARTHUR is not set
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_CMDLINE="root=/dev/hda2 ro mem=32M parport=0x378,7 ide0=autotune"
CONFIG_CMDLINE="root=/dev/hda1 ro mem=32M parport=0x378,7 ide0=autotune"
CONFIG_LEDS=y
CONFIG_LEDS_TIMER=y
# CONFIG_LEDS_CPU is not set
......
......@@ -22,6 +22,7 @@ O_OBJS_rpc = dma-rpc.o iic.o fiq.o
O_OBJS_ebsa110 = dma-dummy.o
O_OBJS_footbridge = dma-footbridge.o $(ISA_DMA_OBJS) isa.o
O_OBJS_nexuspci = dma-dummy.o
O_OBJS_sa1100 = dma-dummy.o fiq.o
OX_OBJS_arc = dma.o
OX_OBJS_a5k = dma.o
......@@ -29,11 +30,16 @@ OX_OBJS_rpc = dma.o
OX_OBJS_ebsa110 =
OX_OBJS_footbridge= dma.o hw-footbridge.o
OX_OBJS_nexuspci =
OX_OBJS_sa1100 =
all: kernel.o $(HEAD_OBJ) init_task.o
O_OBJS += $(O_OBJS_$(MACHINE))
ifeq ($(CONFIG_DEBUG_LL),y)
O_OBJS += debug-$(PROCESSOR).o
endif
ifeq ($(CONFIG_MODULES),y)
OX_OBJS = armksyms.o
endif
......@@ -42,17 +48,15 @@ ifeq ($(CONFIG_ARCH_ACORN),y)
OX_OBJS += ecard.o
endif
ifeq ($(MACHINE),nexuspci)
ifdef CONFIG_PCI
ifeq ($(CONFIG_PCI),y)
ifeq ($(MACHINE),nexuspci)
O_OBJS += plx9080.o
endif
else
ifdef CONFIG_PCI
else
O_OBJS += bios32.o dec21285.o
endif
endif
ifdef CONFIG_LEDS
ifeq ($(CONFIG_LEDS),y)
OX_OBJS += leds-$(MACHINE).o
endif
......@@ -73,13 +77,11 @@ endif
$(HEAD_OBJ): $(HEAD_OBJ:.o=.S)
$(CC) -D__ASSEMBLY__ -DTEXTADDR=$(TEXTADDR) -traditional -c $(HEAD_OBJ:.o=.S) -o $@
$(ENTRY_OBJ): $(ENTRY_OBJ:.o=.S)
$(CC) $(CFLAGS) -D__ASSEMBLY__ -c $(ENTRY_OBJ:.o=.S) -o $@
include $(TOPDIR)/Rules.make
$(ENTRY_OBJ): ../lib/constants.h
.S.o:
$(CC) -D__ASSEMBLY__ $(AFLAGS) $(AFLAGS_$@) -c -o $*.o $<
# Spell out some dependencies that `make dep' doesn't spot
entry-armv.o: calls.S
entry-armo.o: calls.S
entry-armv.o: calls.S ../lib/constants.h
entry-armo.o: calls.S ../lib/constants.h
......@@ -2,12 +2,14 @@
#include <linux/module.h>
#include <linux/user.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/in6.h>
#include <asm/byteorder.h>
#include <asm/elf.h>
#include <asm/io.h>
#include <asm/dma.h>
......@@ -93,6 +95,9 @@ EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(__iounmap);
#endif
EXPORT_SYMBOL(kernel_thread);
EXPORT_SYMBOL(system_rev);
EXPORT_SYMBOL(system_serial_low);
EXPORT_SYMBOL(system_serial_high);
EXPORT_SYMBOL(enable_irq);
EXPORT_SYMBOL(disable_irq);
......@@ -108,7 +113,7 @@ EXPORT_SYMBOL(cpu_clean_cache_area);
EXPORT_SYMBOL(cpu_flush_ram_page);
EXPORT_SYMBOL(cpu_flush_tlb_all);
EXPORT_SYMBOL(cpu_flush_tlb_area);
EXPORT_SYMBOL(cpu_switch_mm);
EXPORT_SYMBOL(cpu_set_pgd);
EXPORT_SYMBOL(cpu_set_pmd);
EXPORT_SYMBOL(cpu_set_pte);
EXPORT_SYMBOL(cpu_flush_icache_area);
......@@ -165,19 +170,20 @@ EXPORT_SYMBOL_NOVERS(strpbrk);
EXPORT_SYMBOL_NOVERS(strtok);
EXPORT_SYMBOL_NOVERS(strrchr);
EXPORT_SYMBOL_NOVERS(strstr);
EXPORT_SYMBOL_NOVERS(memset);
EXPORT_SYMBOL_NOVERS(__memset);
EXPORT_SYMBOL_NOVERS(memset); /* needed for some versions of gcc */
EXPORT_SYMBOL_NOVERS(memcpy);
EXPORT_SYMBOL_NOVERS(memmove);
EXPORT_SYMBOL_NOVERS(memcmp);
EXPORT_SYMBOL_NOVERS(memscan);
EXPORT_SYMBOL_NOVERS(memzero);
EXPORT_SYMBOL_NOVERS(__memzero);
/* user mem (segment) */
#if defined(CONFIG_CPU_32)
EXPORT_SYMBOL(__arch_copy_from_user);
EXPORT_SYMBOL(__arch_copy_to_user);
EXPORT_SYMBOL(__arch_clear_user);
EXPORT_SYMBOL(__arch_strlen_user);
EXPORT_SYMBOL(__arch_strnlen_user);
#elif defined(CONFIG_CPU_26)
EXPORT_SYMBOL(uaccess_kernel);
EXPORT_SYMBOL(uaccess_user);
......
......@@ -7,6 +7,7 @@
*/
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <asm/irq.h>
......@@ -72,6 +73,38 @@ struct pci_fixup pcibios_fixups[] = {
{ 0 }
};
/*
* Assign new address to PCI resource. We hope our resource information
* is complete. On the PC, we don't re-assign resources unless we are
* forced to do so.
*
* Expects start=0, end=size-1, flags=resource type.
*/
int __init pcibios_assign_resource(struct pci_dev *dev, int i)
{
struct resource *r = &dev->resource[i];
struct resource *pr = pci_find_parent_resource(dev, r);
unsigned long size = r->end + 1;
unsigned long flags = 0;
if (!pr)
return -EINVAL;
if (r->flags & IORESOURCE_IO) {
if (size > 0x100)
return -EFBIG;
if (allocate_resource(pr, r, size, 0x9000, ~0, 1024))
return -EBUSY;
flags = PCI_BASE_ADDRESS_SPACE_IO;
} else {
if (allocate_resource(pr, r, size, 0x00100000, 0x7fffffff, size))
return -EBUSY;
}
if (i < 6)
pci_write_config_dword(dev, PCI_BASE_ADDRESS_0 + 4*i, r->start | flags);
return 0;
}
/*
* Assign an address to an I/O range.
*/
......
/*
* linux/arch/arm/kernel/debug-armo.S
*
* Copyright (C) 1999 Russell King
*
* 26-bit debugging code
*/
#include <linux/linkage.h>
.macro addruart,rx
mov \rx, #0x03000000
orr \rx, \rx, #0x00010000
orr \rx, \rx, #0x00000fe0
.endm
.macro senduart,rd,rx
strb \rd, [\rx]
.endm
.macro busyuart,rd,rx
1002: ldrb \rd, [\rx, #0x14]
and \rd, \rd, #0x60
teq \rd, #0x60
bne 1002b
.endm
.macro waituart,rd,rx
1001: ldrb \rd, [\rx, #0x18]
tst \rd, #0x10
beq 1001b
.endm
.text
/*
* Useful debugging routines
*/
ENTRY(printhex8)
mov r1, #8
b printhex
ENTRY(printhex4)
mov r1, #4
b printhex
ENTRY(printhex2)
mov r1, #2
printhex: ldr r2, =hexbuf
add r3, r2, r1
mov r1, #0
strb r1, [r3]
1: and r1, r0, #15
mov r0, r0, lsr #4
cmp r1, #10
addlt r1, r1, #'0'
addge r1, r1, #'a' - 10
strb r1, [r3, #-1]!
teq r3, r2
bne 1b
mov r0, r2
b printascii
.ltorg
ENTRY(printascii)
addruart r3
b 2f
1: waituart r2, r3
senduart r1, r3
busyuart r2, r3
teq r1, #'\n'
moveq r1, #'\r'
beq 1b
2: teq r0, #0
ldrneb r1, [r0], #1
teqne r1, #0
bne 1b
mov pc, lr
ENTRY(printch)
addruart r3
mov r1, r0
mov r0, #0
b 1b
.bss
hexbuf: .space 16
/*
* linux/arch/arm/kernel/debug-armv.S
*
* Copyright (C) 1994-1999 Russell King
*
* 32-bit debugging code
*/
#include <linux/config.h>
#include <linux/linkage.h>
#include <asm/hardware.h>
#include <asm/dec21285.h>
.text
/*
* Some debugging routines (useful if you've got MM problems and
* printk isn't working). For DEBUGGING ONLY!!! Do not leave
* references to these in a production kernel!
*/
#if defined(CONFIG_ARCH_RPC)
.macro addruart,rx
mov \rx, #0xe0000000
orr \rx, \rx, #0x00010000
orr \rx, \rx, #0x00000fe0
.endm
.macro senduart,rd,rx
strb \rd, [\rx]
.endm
.macro busyuart,rd,rx
1002: ldrb \rd, [\rx, #0x14]
and \rd, \rd, #0x60
teq \rd, #0x60
bne 1002b
.endm
.macro waituart,rd,rx
1001: ldrb \rd, [\rx, #0x18]
tst \rd, #0x10
beq 1001b
.endm
#elif defined(CONFIG_ARCH_EBSA110)
.macro addruart,rx
mov \rx, #0xf0000000
orr \rx, \rx, #0x00000be0
.endm
.macro senduart,rd,rx
strb \rd, [\rx]
.endm
.macro busyuart,rd,rx
1002: ldrb \rd, [\rx, #0x14]
and \rd, \rd, #0x60
teq \rd, #0x60
bne 1002b
.endm
.macro waituart,rd,rx
1001: ldrb \rd, [\rx, #0x18]
tst \rd, #0x10
beq 1001b
.endm
#elif defined(CONFIG_HOST_FOOTBRIDGE) || defined(CONFIG_ADDIN_FOOTBRIDGE)
#ifndef CONFIG_DEBUG_DC21285_PORT
/* For NetWinder debugging */
.macro addruart,rx
mov \rx, #0xff000000
orr \rx, \rx, #0x000003f8
.endm
.macro senduart,rd,rx
strb \rd, [\rx]
.endm
.macro busyuart,rd,rx
1002: ldrb \rd, [\rx, #0x5]
and \rd, \rd, #0x60
teq \rd, #0x60
bne 1002b
.endm
.macro waituart,rd,rx
1001: ldrb \rd, [\rx, #0x6]
tst \rd, #0x10
beq 1001b
.endm
#else
/* For EBSA285 debugging */
.equ dc21285_high, ARMCSR_BASE & 0xff000000
.equ dc21285_low, ARMCSR_BASE & 0x00ffffff
.macro addruart,rx
mov \rx, #dc21285_high
.if dc21285_low
orr \rx, \rx, #dc21285_low
.endif
.endm
.macro senduart,rd,rx
str \rd, [\rx, #0x160] @ UARTDR
.endm
.macro busyuart,rd,rx
1001: ldr \rd, [\rx, #0x178] @ UARTFLG
tst \rd, #1 << 3
bne 1001b
.endm
.macro waituart,rd,rx
.endm
#endif
#elif defined(CONFIG_ARCH_NEXUSPCI)
.macro addruart,rx
ldr \rx, =0xfff00000
.endm
.macro senduart,rd,rx
str \rd, [\rx, #0xc]
.endm
.macro busyuart,rd,rx
1001: ldr \rd, [\rx, #0x4]
tst \rd, #1 << 0
bne 1001b
.endm
.macro waituart,rd,rx
.endm
#elif defined(CONFIG_ARCH_SA1100)
.macro addruart,rx
mov \rx, #0xf8000000
add \rx, \rx, #0x00050000
.endm
.macro senduart,rd,rx
str \rd, [\rx, #0x14] @ UARTDR
.endm
.macro busyuart,rd,rx
1001: ldr \rd, [\rx, #0x20] @ UTSR1
tst \rd, #1 << 2
beq 1001b
.endm
#else
#error Unknown architecture
#endif
/*
* Useful debugging routines
*/
ENTRY(printhex8)
mov r1, #8
b printhex
ENTRY(printhex4)
mov r1, #4
b printhex
ENTRY(printhex2)
mov r1, #2
printhex: ldr r2, =hexbuf
add r3, r2, r1
mov r1, #0
strb r1, [r3]
1: and r1, r0, #15
mov r0, r0, lsr #4
cmp r1, #10
addlt r1, r1, #'0'
addge r1, r1, #'a' - 10
strb r1, [r3, #-1]!
teq r3, r2
bne 1b
mov r0, r2
b printascii
.ltorg
ENTRY(printascii)
addruart r3
b 2f
1: waituart r2, r3
senduart r1, r3
busyuart r2, r3
teq r1, #'\n'
moveq r1, #'\r'
beq 1b
2: teq r0, #0
ldrneb r1, [r0], #1
teqne r1, #0
bne 1b
mov pc, lr
ENTRY(printch)
addruart r3
mov r1, r0
mov r0, #0
b 1b
.bss
hexbuf: .space 16
This diff is collapsed.
......@@ -17,15 +17,18 @@ int request_dma(int channel, const char *device_id)
return -EINVAL;
}
void free_dma(int channel)
{
}
int get_dma_list(char *buf)
int no_dma(void)
{
return 0;
}
void __init init_dma(void)
{
}
#define GLOBAL_ALIAS(_a,_b) asm (".set " #_a "," #_b "; .globl " #_a)
GLOBAL_ALIAS(disable_dma, no_dma);
GLOBAL_ALIAS(enable_dma, no_dma);
GLOBAL_ALIAS(free_dma, no_dma);
GLOBAL_ALIAS(get_dma_residue, no_dma);
GLOBAL_ALIAS(get_dma_list, no_dma);
GLOBAL_ALIAS(set_dma_mode, no_dma);
GLOBAL_ALIAS(set_dma_count, no_dma);
GLOBAL_ALIAS(set_dma_addr, no_dma);
GLOBAL_ALIAS(init_dma, no_dma);
......@@ -13,14 +13,11 @@
#include <linux/config.h>
#include <linux/sched.h>
#include <linux/malloc.h>
#include <linux/mman.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <asm/page.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/hardware.h>
#include "dma.h"
#include "dma-isa.h"
......
......@@ -126,6 +126,13 @@ void isa_disable_dma(int channel, dma_t *dma)
outb(channel | 4, isa_dma_port[channel][ISA_DMA_MASK]);
}
static struct resource dma_resources[] = {
{ "dma1", 0x0000, 0x000f },
{ "dma low page", 0x0080, 0x008f },
{ "dma2", 0x00c0, 0x00df },
{ "dma high page", 0x0480, 0x048f }
};
int __init isa_init_dma(void)
{
int dmac_found;
......
......@@ -357,6 +357,8 @@ int arch_set_dma_speed(dmach_t channel, dma_t *dma, int cycle)
}
outb(tcr, IOMD_DMATCR);
return speed;
}
void __init arch_dma_init(dma_t *dma)
......
......@@ -82,7 +82,7 @@ static unsigned int have_expmask;
/* List of descriptions of cards which don't have an extended
* identification, or chunk directories containing a description.
*/
static const struct expcard_blacklist __init blacklist[] = {
static struct expcard_blacklist __initdata blacklist[] = {
{ MANU_ACORN, PROD_ACORN_ETHER1, "Acorn Ether1" }
};
......@@ -827,6 +827,8 @@ unsigned int ecard_address(ecard_t *ec, card_type_t type, card_speed_t speed)
ectcr |= 1 << slot;
break;
#endif
default:
break;
}
#ifdef IOMD_ECTCR
......
......@@ -298,6 +298,30 @@ irq_prio_ebsa110:
.macro irq_prio_table
.endm
#elif defined(CONFIG_ARCH_SA1100)
.macro disable_fiq
.endm
.macro get_irqnr_and_base, irqnr, irqstat, base
mov r4, #0xfa000000 @ ICIP = 0xfa050000
add r4, r4, #0x00050000
ldr \irqstat, [r4] @ get irqs
ldr \irqnr, [r4, #4] @ ICMR = 0xfa050004
ands \irqstat, \irqstat, \irqnr
mov \irqnr, #0
beq 1002f
1001: tst \irqstat, #1
addeq \irqnr, \irqnr, #1
moveq \irqstat, \irqstat, lsr #1
beq 1001b
1002:
.endm
.macro irq_prio_table
.endm
#else
#error Unknown architecture
#endif
......@@ -449,11 +473,15 @@ __dabt_svc: sub sp, sp, #S_FRAME_SIZE
add r5, sp, #S_SP
mov r1, lr
stmia r5, {r0 - r4} @ save sp_SVC, lr_SVC, pc, cpsr, old_ro
mrs r9, cpsr @ Enable interrupts if they were
tst r3, #I_BIT
mrseq r0, cpsr @ Enable interrupts if they were
biceq r0, r0, #I_BIT @ previously
msreq cpsr, r0
biceq r9, r9, #I_BIT @ previously
mov r0, r2
/*
* This routine must not corrupt r9
*/
#ifdef MULTI_CPU
ldr r2, .LCprocfns
mov lr, pc
......@@ -461,6 +489,7 @@ __dabt_svc: sub sp, sp, #S_FRAME_SIZE
#else
bl cpu_data_abort
#endif
msr cpsr, r9
mov r3, sp
bl SYMBOL_NAME(do_DataAbort)
ldr r0, [sp, #S_PSR]
......@@ -544,9 +573,6 @@ __dabt_usr: sub sp, sp, #S_FRAME_SIZE @ Allocate frame size in one go
#endif
mov fp, #0
mrs r2, cpsr @ Enable interrupts if they were
bic r2, r2, #I_BIT @ previously
msr cpsr, r2
#ifdef MULTI_CPU
ldr r2, .LCprocfns
mov lr, pc
......@@ -554,6 +580,10 @@ __dabt_usr: sub sp, sp, #S_FRAME_SIZE @ Allocate frame size in one go
#else
bl cpu_data_abort
#endif
mrs r3, cpsr @ Enable interrupts if they were
bic r3, r3, #I_BIT @ previously
msr cpsr, r3
mov r3, sp
adrsvc al, lr, ret_from_sys_call
b SYMBOL_NAME(do_DataAbort)
......
/*
* linux/arch/arm/kernel/head.S
* linux/arch/arm/kernel/head-armo.S
*
* Copyright (C) 1994, 1995, 1996, 1997 Russell King
*
......@@ -7,11 +7,13 @@
*/
#include <linux/linkage.h>
.text
.align
.globl SYMBOL_NAME(swapper_pg_dir)
.equ SYMBOL_NAME(swapper_pg_dir), 0x0207d000
/*
* Entry point.
*/
.section ".text.init",#alloc,#execinstr
ENTRY(stext)
ENTRY(_stext)
__entry: cmp pc, #0x02000000
......
This diff is collapsed.
......@@ -25,269 +25,8 @@
#include <asm/system.h>
#define IRDA_IO_BASE 0x180
#define ETHER10_IO_BASE 0x301
#define GP1_IO_BASE 0x338
#define GP2_IO_BASE 0x33a
#define DEC21143_IO_BASE 0x401
#define DEC21143_MEM_BASE 0x00800000
#define CYBER2000_MEM_BASE 0x01000000
int have_isa_bridge;
extern int setup_arm_irq(int, struct irqaction *);
extern void pci_set_cmd(struct pci_dev *dev, unsigned short clear, unsigned short set);
extern void pci_set_base_addr(struct pci_dev *dev, int idx, unsigned int addr);
extern void pci_set_irq_line(struct pci_dev *dev, unsigned int irq);
extern void (*kd_mksound)(unsigned int hz, unsigned int ticks);
#ifdef CONFIG_PCI
static int irqmap_ebsa[] __initdata = { IRQ_IN1, IRQ_IN0, IRQ_PCI, IRQ_IN3 };
static int __init ebsa_irqval(struct pci_dev *dev)
{
unsigned char pin;
pcibios_read_config_byte(dev->bus->number,
dev->devfn,
PCI_INTERRUPT_PIN,
&pin);
return irqmap_ebsa[(PCI_SLOT(dev->devfn) + pin) & 3];
}
#ifdef CONFIG_CATS
static int irqmap_cats[] __initdata = { IRQ_PCI, IRQ_IN0, IRQ_IN1, IRQ_IN3 };
static int __init cats_irqval(struct pci_dev *dev)
{
if (dev->irq >= 128)
return 16 + (dev->irq & 0x1f);
switch (dev->irq) {
case 1:
case 2:
case 3:
case 4:
return irqmap_cats[dev->irq - 1];
case 0:
return 0;
}
printk("PCI: device %02x:%02x has unknown irq line %x\n",
dev->bus->number, dev->devfn, dev->irq);
return 0;
}
#endif
void __init pcibios_fixup_ebsa285(struct pci_dev *dev)
{
/* Latency timer of 32 */
pci_write_config_byte(dev, PCI_LATENCY_TIMER, 32);
/* 32-byte cache line size */
pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, 8);
/* Set SysErr enable, Parity enable */
pci_set_cmd(dev, 0, PCI_COMMAND_FAST_BACK | PCI_COMMAND_SERR | PCI_COMMAND_PARITY);
/* If this device is an ISA bridge, set the
* have_isa_bridge flag. We will then go looking
* for things like keyboard, etc
*/
if ((dev->class >> 8) == PCI_CLASS_BRIDGE_ISA ||
(dev->class >> 8) == PCI_CLASS_BRIDGE_EISA)
have_isa_bridge = !0;
/* sort out the irq mapping for this device */
switch (machine_arch_type) {
case MACH_TYPE_EBSA285:
dev->irq = ebsa_irqval(dev);
/* Turn on bus mastering - boot loader doesn't
* - perhaps it should! - dag
*/
pci_set_cmd(dev, 0, PCI_COMMAND_MASTER);
break;
#ifdef CONFIG_CATS
case MACH_TYPE_CATS:
dev->irq = cats_irqval(dev);
/* Turn on bus mastering - boot loader doesn't
* - perhaps it should! - dag
*/
pci_set_cmd(dev, 0, PCI_COMMAND_MASTER);
break;
#endif
#ifdef CONFIG_ARCH_NETWINDER
case MACH_TYPE_NETWINDER:
/* disable ROM */
pci_write_config_dword(dev, PCI_ROM_ADDRESS, 0);
#define DEV(v,d) ((v)<<16|(d))
switch (DEV(dev->vendor, dev->device)) {
/* Ether 100 */
case DEV(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142):
pci_set_base_addr(dev, 0, DEC21143_IO_BASE);
pci_set_base_addr(dev, 1, DEC21143_MEM_BASE);
pci_set_cmd(dev, 0, PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
/* Put the chip to sleep in case the driver isn't loaded */
pci_write_config_dword(dev, 0x40, 0x80000000);
dev->irq = IRQ_NETWINDER_ETHER100;
break;
/* Ether 10 */
case DEV(PCI_VENDOR_ID_WINBOND2,0x5a5a):
pci_set_base_addr(dev, 0, ETHER10_IO_BASE);
pci_set_cmd(dev, PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY, PCI_COMMAND_IO);
dev->irq = IRQ_NETWINDER_ETHER10;
break;
/* ISA bridge */
case DEV(PCI_VENDOR_ID_WINBOND,PCI_DEVICE_ID_WINBOND_83C553):
pci_set_base_addr(dev, 0, 0);
pci_set_cmd(dev, PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY, PCI_COMMAND_IO);
/*
* Enable all memory requests from ISA to be channeled to PCI
*/
pci_write_config_byte(dev, 0x48, 255);
/*
* Disable ping-pong (as per errata)
*/
pci_write_config_byte(dev, 0x42, 0);
/*
* Enable PCI packet retry
*/
pci_write_config_byte(dev, 0x40, 0x22);
/*
* Do not use PCI CPU park enable, park on
* last master, disable GAT bit
*/
pci_write_config_byte(dev, 0x83, 0x02);
/*
* Default rotating priorities
*/
pci_write_config_byte(dev, 0x80, 0xe0);
/*
* Rotate bank 4
*/
pci_write_config_byte(dev, 0x81, 0x01);
break;
/* IDE */
case DEV(PCI_VENDOR_ID_WINBOND,PCI_DEVICE_ID_WINBOND_82C105):
pci_set_base_addr(dev, 0, 0x1f1);
pci_set_base_addr(dev, 1, 0x3f5);
pci_set_base_addr(dev, 2, 0x171);
pci_set_base_addr(dev, 3, 0x375);
pci_set_base_addr(dev, 4, 0xe801);
pci_set_cmd(dev, PCI_COMMAND_MEMORY, PCI_COMMAND_MASTER | PCI_COMMAND_IO);
dev->irq = IRQ_ISA_HARDDISK1;
break;
/* VGA */
case DEV(PCI_VENDOR_ID_INTERG,0x2000):
pci_set_base_addr(dev, 0, CYBER2000_MEM_BASE);
pci_set_cmd(dev, PCI_COMMAND_MASTER, PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
dev->irq = IRQ_NETWINDER_VGA;
break;
}
#endif
}
}
static inline void
report_pci_dev_error(void)
{
struct pci_dev *dev;
for (dev = pci_devices; dev; dev = dev->next) {
unsigned short status;
pci_read_config_word(dev, PCI_STATUS, &status);
if (status & 0xf900) {
printk(KERN_DEBUG "PCI: [%04X:%04X] status = %X\n",
dev->vendor, dev->device, status);
pci_write_config_word(dev, PCI_STATUS, status & 0xf900);
}
}
}
#else
#define report_pci_dev_error()
#endif
/*
* Warn on PCI errors. Please report any occurances!
*/
static void
irq_pci_err(int irq, void *dev_id, struct pt_regs *regs)
{
static unsigned long next_warn;
unsigned long cmd = *CSR_PCICMD & 0x0000ffff;
unsigned long ctrl = (*CSR_SA110_CNTL) & 0xffffde07;
unsigned long irqstatus = *CSR_IRQ_RAWSTATUS;
int warn = time_after_eq(jiffies, next_warn);
ctrl |= SA110_CNTL_DISCARDTIMER;
if (warn) {
next_warn = jiffies + 3 * HZ / 100;
printk(KERN_DEBUG "PCI: ");
}
if (irqstatus & (1 << 31)) {
if (warn)
printk("parity error ");
cmd |= 1 << 31;
}
if (irqstatus & (1 << 30)) {
if (warn)
printk("target abort ");
cmd |= 1 << 28;
}
if (irqstatus & (1 << 29)) {
if (warn)
printk("master abort ");
cmd |= 1 << 29;
}
if (irqstatus & (1 << 28)) {
if (warn)
printk("data parity error ");
cmd |= 1 << 24;
}
if (irqstatus & (1 << 27)) {
if (warn)
printk("discard timer expired ");
ctrl &= ~SA110_CNTL_DISCARDTIMER;
}
if (irqstatus & (1 << 23)) {
if (warn)
printk("system error ");
ctrl |= SA110_CNTL_RXSERR;
}
if (warn)
printk("pc=[<%08lX>]\n", instruction_pointer(regs));
report_pci_dev_error();
*CSR_PCICMD = cmd;
*CSR_SA110_CNTL = ctrl;
}
static struct irqaction irq_pci_error = {
irq_pci_err, SA_INTERRUPT, 0, "PCI error", NULL, NULL
};
void __init pcibios_init_ebsa285(void)
{
setup_arm_irq(IRQ_PCI_ERR, &irq_pci_error);
}
/*
* Netwinder stuff
......@@ -627,7 +366,7 @@ void __netwinder_text cpld_modify(int mask, int set)
current_cpld = (current_cpld & ~mask) | set;
gpio_modify_io(GPIO_DATA, 0);
gpio_modify_io(GPIO_DATA | GPIO_IOCLK | GPIO_IOLOAD, 0);
gpio_modify_op(GPIO_IOLOAD, 0);
for (msk = 8; msk; msk >>= 1) {
......@@ -647,7 +386,7 @@ static void __init cpld_init(void)
unsigned long flags;
spin_lock_irqsave(&gpio_lock, flags);
cpld_modify(-1, CPLD_UNMUTE | 4);
cpld_modify(-1, CPLD_UNMUTE | CPLD_7111_DISABLE);
spin_unlock_irqrestore(&gpio_lock, flags);
}
......@@ -713,12 +452,15 @@ static inline void rwa010_global_init(void)
dprintk("Card no = %d\n", inb(0x203));
/* disable the modem section of the chip */
WRITE_RWA(7, 3);
WRITE_RWA(0x30, 0);
/* disable the cdrom section of the chip */
WRITE_RWA(7, 4);
WRITE_RWA(0x30, 0);
/* disable the MPU-401 section of the chip */
WRITE_RWA(7, 2);
WRITE_RWA(0x30, 0);
}
......@@ -925,6 +667,7 @@ void __init hw_init(void)
extern void register_isa_ports(unsigned int, unsigned int,
unsigned int);
register_isa_ports(DC21285_PCI_MEM, DC21285_PCI_IO, 0);
#ifdef CONFIG_ARCH_NETWINDER
/*
* this ought to have a better home...
......
#include <linux/mm.h>
#include <linux/fs.h>
#include <linux/sched.h>
#include <asm/uaccess.h>
......
......@@ -9,10 +9,12 @@
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/ioport.h>
#include <linux/mm.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
#ifdef CONFIG_CPU_32
asmlinkage int sys_iopl(unsigned long turn_on)
{
if (turn_on && !capable(CAP_SYS_RAWIO))
......@@ -25,3 +27,9 @@ asmlinkage int sys_iopl(unsigned long turn_on)
return 0;
}
#else
asmlinkage int sys_iopl(unsigned long turn_on)
{
return -ENOSYS;
}
#endif
......@@ -494,8 +494,5 @@ void __init init_IRQ(void)
}
irq_init_irq();
#ifdef CONFIG_ARCH_ACORN
init_FIQ();
#endif
init_dma();
}
......@@ -138,7 +138,7 @@ static void __netwinder_text netwinder_leds_event(led_event_t evt)
switch (evt) {
case led_start:
led_state |= LED_STATE_ENABLED;
hw_led_state = 0;
hw_led_state = GPIO_GREEN_LED;
break;
case led_stop:
......@@ -223,26 +223,20 @@ static void dummy_leds_event(led_event_t evt)
{
}
void __init
static void __init
init_leds_event(led_event_t evt)
{
switch (machine_arch_type) {
leds_event = dummy_leds_event;
#ifdef CONFIG_FOOTBRIDGE
case MACH_TYPE_EBSA285:
case MACH_TYPE_CO285:
if (machine_is_ebsa285() || machine_is_co285())
leds_event = ebsa285_leds_event;
break;
#endif
#ifdef CONFIG_ARCH_NETWINDER
case MACH_TYPE_NETWINDER:
if (machine_is_netwinder())
leds_event = netwinder_leds_event;
break;
#endif
default:
leds_event = dummy_leds_event;
}
leds_event(evt);
}
......
/*
* linux/arch/arm/kernel/process.c
*
* Copyright (C) 1996 Russell King - Converted to ARM.
* Copyright (C) 1996-1999 Russell King - Converted to ARM.
* Origional Copyright (C) 1995 Linus Torvalds
*/
......@@ -32,6 +32,7 @@
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/arch/system.h>
#include <asm/io.h>
extern char *processor_modes[];
......@@ -60,26 +61,38 @@ void cpu_idle(void)
current->priority = 0;
current->counter = -100;
while (1) {
if (!current->need_resched && !hlt_counter)
proc_idle();
schedule();
if (!hlt_counter)
arch_do_idle();
if (current->need_resched) {
schedule();
#ifndef CONFIG_NO_PGT_CACHE
check_pgt_cache();
check_pgt_cache();
#endif
}
}
}
static char reboot_mode = 'h';
void __init reboot_setup(char *str, int *ints)
int __init reboot_setup(char *str)
{
reboot_mode = str[0];
return 0;
}
__setup("reboot=", reboot_setup);
void machine_restart(char * __unused)
{
/*
* Turn off caches, interrupts, etc
*/
cpu_proc_fin();
arch_reset(reboot_mode);
panic("Reboot failed\n");
printk("Reboot failed -- System halted\n");
while (1);
}
......@@ -135,6 +148,35 @@ void show_regs(struct pt_regs * regs)
#endif
}
void show_fpregs(struct user_fp *regs)
{
int i;
for (i = 0; i < 8; i++) {
unsigned long *p;
char type;
p = (unsigned long *)(regs->fpregs + i);
switch (regs->ftype[i]) {
case 1: type = 'f'; break;
case 2: type = 'd'; break;
case 3: type = 'e'; break;
default: type = '?'; break;
}
if (regs->init_flag)
type = '?';
printk(" f%d(%c): %08lx %08lx %08lx%c",
i, type, p[0], p[1], p[2], i & 1 ? '\n' : ' ');
}
printk("FPSR: %08lx FPCR: %08lx\n",
(unsigned long)regs->fpsr,
(unsigned long)regs->fpcr);
}
/*
* Task structure and kernel stack allocation.
*
......@@ -206,6 +248,7 @@ void exit_thread(void)
void flush_thread(void)
{
memset(&current->thread.debug, 0, sizeof(current->thread.debug));
memset(&current->thread.fpstate, 0, sizeof(current->thread.fpstate));
current->used_math = 0;
current->flags &= ~PF_USEDFPU;
}
......@@ -237,12 +280,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
*/
int dump_fpu (struct pt_regs *regs, struct user_fp *fp)
{
int fpvalid = 0;
if (current->used_math)
memcpy (fp, &current->thread.fpstate.soft, sizeof (fp));
memcpy(fp, &current->thread.fpstate.soft, sizeof (fp));
return fpvalid;
return current->used_math;
}
/*
......@@ -281,6 +322,7 @@ void dump_thread(struct pt_regs * regs, struct user * dump)
*/
pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
extern long sys_exit(int) __attribute__((noreturn));
pid_t __ret;
__asm__ __volatile__(
......
......@@ -447,8 +447,8 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
unsigned long tmp;
ret = read_long(child, addr, &tmp);
if (ret)
put_user(tmp, (unsigned long *) data);
if (!ret)
ret = put_user(tmp, (unsigned long *) data);
goto out;
}
......
......@@ -8,6 +8,7 @@
* Modified for ARM by Russell King
*/
#include <linux/sched.h>
#include <linux/errno.h>
#include <asm/semaphore.h>
......
This diff is collapsed.
......@@ -16,6 +16,8 @@
#include <linux/ptrace.h>
#include <linux/unistd.h>
#include <linux/stddef.h>
#include <linux/binfmts.h>
#include <linux/tty.h>
#include <asm/ucontext.h>
#include <asm/uaccess.h>
......@@ -550,6 +552,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
default:
lock_kernel();
sigaddset(&current->signal, signr);
recalc_sigpending(current);
current->flags |= PF_SIGNALED;
do_exit(exit_code);
/* NOTREACHED */
......
......@@ -19,6 +19,7 @@
#include <linux/shm.h>
#include <linux/stat.h>
#include <linux/mman.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/utsname.h>
......
......@@ -365,7 +365,6 @@ asmlinkage void baddataabort(int code, unsigned long instr, struct pt_regs *regs
{
pgd_t *pgd;
printk ("current->thread.memmap = %08lX\n", current->thread.memmap);
pgd = pgd_offset(current->mm, addr);
printk ("*pgd = %08lx", pgd_val (*pgd));
if (!pgd_none (*pgd)) {
......
This diff is collapsed.
......@@ -21,6 +21,11 @@ ENTRY(__backtrace)
mov r0, fp
ENTRY(c_backtrace)
#ifndef CONFIG_FRAME_POINTER
mov pc, lr
#else
stmfd sp!, {r4 - r8, lr} @ Save an extra register so we have a location...
#ifdef CONFIG_CPU_32
tst r1, #0x10 @ 26 or 32-bit?
......@@ -103,3 +108,5 @@ ENTRY(c_backtrace)
.align
.Ldsi: .word 0x00e92dd8 >> 2
.word 0x00e92d00 >> 2
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -30,7 +30,7 @@ SYMBOL_NAME(uaccess_user):
.word __arch_copy_to_user
.word __arch_clear_user
.word __arch_strncpy_from_user
.word __arch_strlen_user
.word __arch_strnlen_user
@ In : r0 = x, r1 = addr, r2 = error
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -3,7 +3,7 @@
(c) Corel Computer Corporation, 1998
(c) Philip Blundell 1998-1999
Direct questions, comments to Scott Bambrough <scottb@corelcomputer.com>
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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