Commit b0683ac8 authored by Linus Torvalds's avatar Linus Torvalds

v2.4.3.1 -> v2.4.3.2

  - Ingo Molnar/Al Viro: don't use bforget() on ext2 (and minix) metadata
  where we may not be the only owner of the buffer! FS corruption.
  - Andi Kleen: IPv6 packet re-assembly fix.
  - David Howells: fix up rwsem implementation
  - Alan Cox: more merging (S/390 down, ARM to go).
  - Jens Axboe: LVM and loop fixes
parent 3544b328
...@@ -31,7 +31,7 @@ al espa ...@@ -31,7 +31,7 @@ al espa
Eine deutsche Version dieser Datei finden Sie unter Eine deutsche Version dieser Datei finden Sie unter
<http://www.stefan-winter.de/Changes-2.4.0.txt>. <http://www.stefan-winter.de/Changes-2.4.0.txt>.
Last updated: January 11, 2001 Last updated: April 6, 2001
Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu). Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu).
...@@ -54,7 +54,7 @@ o binutils 2.9.1.0.25 # ld -v ...@@ -54,7 +54,7 @@ o binutils 2.9.1.0.25 # ld -v
o util-linux 2.10o # fdformat --version o util-linux 2.10o # fdformat --version
o modutils 2.4.2 # insmod -V o modutils 2.4.2 # insmod -V
o e2fsprogs 1.19 # tune2fs o e2fsprogs 1.19 # tune2fs
o reiserfsprogs 3.x.0d # reiserfsck 2>&1|grep reiserfsprogs o reiserfsprogs 3.x.0j # reiserfsck 2>&1|grep reiserfsprogs
o pcmcia-cs 3.1.21 # cardmgr -V o pcmcia-cs 3.1.21 # cardmgr -V
o PPP 2.4.0 # pppd --version o PPP 2.4.0 # pppd --version
o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version
...@@ -148,7 +148,7 @@ Modutils ...@@ -148,7 +148,7 @@ Modutils
-------- --------
Upgrade to recent modutils to fix various outstanding bugs which are Upgrade to recent modutils to fix various outstanding bugs which are
seen more frequently under 2.3.x, and to enable auto-loading of USB seen more frequently under 2.4.x, and to enable auto-loading of USB
modules. In addition, the layout of modules under modules. In addition, the layout of modules under
/lib/modules/`uname -r`/ has been made more sane. This change also /lib/modules/`uname -r`/ has been made more sane. This change also
requires that you upgrade to a recent modutils. requires that you upgrade to a recent modutils.
...@@ -227,7 +227,7 @@ PPP ...@@ -227,7 +227,7 @@ PPP
The PPP driver has been restructured to support multilink and to The PPP driver has been restructured to support multilink and to
enable it to operate over diverse media layers. If you use PPP, enable it to operate over diverse media layers. If you use PPP,
upgrade pppd to at least 2.4.0b1. upgrade pppd to at least 2.4.0.
If you are not using devfs, you must have the device file /dev/ppp If you are not using devfs, you must have the device file /dev/ppp
which can be made by: which can be made by:
...@@ -307,16 +307,16 @@ o <ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.4/> ...@@ -307,16 +307,16 @@ o <ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.4/>
Mkinitrd Mkinitrd
-------- --------
o <ftp://rawhide.redhat.com/pub/rawhide/SRPMS/SRPMS/mkinitrd-2.9-1.src.rpm> o <ftp://rawhide.redhat.com/pub/rawhide/SRPMS/SRPMS/>
E2fsprogs E2fsprogs
--------- ---------
o <ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/e2fsprogs-1.19.tar.gz> o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19.tar.gz>
o <ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/e2fsprogs-1.19.src.rpm> o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19-0.src.rpm>
Reiserfsprogs Reiserfsprogs
------------- -------------
o <ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.x.0d.tar.gz> o <ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.x.0j.tar.gz>
LVM toolset LVM toolset
----------- -----------
...@@ -347,7 +347,7 @@ Network ...@@ -347,7 +347,7 @@ Network
PPP PPP
--- ---
o <ftp://linuxcare.com.au/pub/ppp/ppp-2.4.0.tar.gz> o <ftp://ftp.samba.org/ppp/ppp-2.4.0.tar.gz>
Isdn4k-utils Isdn4k-utils
------------ ------------
......
ARM Linux 2.4.0test1 ARM Linux 2.4
==================== =============
Please check ftp.arm.linux.org.uk:/pub/armlinux for latest updates. Please check ftp.arm.linux.org.uk:/pub/armlinux for latest updates.
...@@ -7,9 +7,8 @@ Compilation of kernel ...@@ -7,9 +7,8 @@ Compilation of kernel
--------------------- ---------------------
In order to compile ARM Linux, you will need a compiler capable of In order to compile ARM Linux, you will need a compiler capable of
generating ARM ELF code with GNU extensions. GCC-2.7.2.2 ELF, GCC 2.8.1 generating ARM ELF code with GNU extensions. GCC 2.95.1 and EGCS 1.1.2
and EGCS are good compilers. Note that GCC-2.7.2.2 ELF is rare, and are good compilers.
you probably don't have it.
To build ARM Linux natively, you shouldn't have to alter the ARCH = line To build ARM Linux natively, you shouldn't have to alter the ARCH = line
in the top level Makefile. However, if you don't have the ARM Linux ELF in the top level Makefile. However, if you don't have the ARM Linux ELF
...@@ -166,4 +165,4 @@ Kernel entry (head-armv.S) ...@@ -166,4 +165,4 @@ Kernel entry (head-armv.S)
receive a reply within one day. receive a reply within one day.
--- ---
Russell King (12/06/2000) Russell King (26/01/2001)
...@@ -48,6 +48,9 @@ check=s|r|n -- Case sensitivity checking setting. ...@@ -48,6 +48,9 @@ check=s|r|n -- Case sensitivity checking setting.
r: relaxed, case insensitive r: relaxed, case insensitive
n: normal, default setting, currently case insensitive n: normal, default setting, currently case insensitive
nocase -- Returning with having the 8.3 format alias kept in
the disk. Default, return lowercase letter.
<bool>: 0,1,yes,no,true,false <bool>: 0,1,yes,no,true,false
TODO TODO
......
...@@ -146,9 +146,16 @@ most of the fields in the header. The following fields should be ...@@ -146,9 +146,16 @@ most of the fields in the header. The following fields should be
filled out, however: filled out, however:
type_of_loader: type_of_loader:
If your boot loader has an identifier assigned in If your boot loader has an assigned id (see table below), enter
arch/i386/boot/setup.S, enter that value. Otherwise, enter 0xTV here, where T is an identifier for the boot loader and V is
0xFF here. a version number. Otherwise, enter 0xFF here.
Assigned boot loader ids:
0 LILO
1 Loadlin
2 bootsect-loader
3 SYSLINUX
4 EtherBoot
loadflags, heap_end_ptr: loadflags, heap_end_ptr:
If the protocol version is 2.01 or higher, enter the If the protocol version is 2.01 or higher, enter the
......
...@@ -16,11 +16,14 @@ Richard Gooch ...@@ -16,11 +16,14 @@ Richard Gooch
these, the ARRs are used to emulate the MTRRs. these, the ARRs are used to emulate the MTRRs.
The AMD K6-2 (stepping 8 and above) and K6-3 processors have two The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
MTRRs. These are supported. MTRRs. These are supported. The AMD Athlon family provide 8 Intel
style MTRRs.
The Centaur C6 (WinChip) has 8 MCRs, allowing write-combining. These The Centaur C6 (WinChip) has 8 MCRs, allowing write-combining. These
are supported. are supported.
The VIA Cyrix III and VIA C3 CPUs offer 8 Intel style MTRRs.
The CONFIG_MTRR option creates a /proc/mtrr file which may be used The CONFIG_MTRR option creates a /proc/mtrr file which may be used
to manipulate your MTRRs. Typically the X server should use to manipulate your MTRRs. Typically the X server should use
this. This should have a reasonably generic interface so that this. This should have a reasonably generic interface so that
......
This diff is collapsed.
...@@ -42,8 +42,16 @@ Entering them into /etc/chandev.conf comments are prefixed #. ...@@ -42,8 +42,16 @@ Entering them into /etc/chandev.conf comments are prefixed #.
.It .It
Or from the boot command line using the 'chandev=' keyword Or from the boot command line using the 'chandev=' keyword
.El .El
.Bl -item
.It
Multiple options can be passed separated by semicolons but no spaces are allowed between parameters. The script /bin/chandev will be called automatically on startup or a machine check of a device as follows. Multiple options can be passed separated by semicolons but no spaces are allowed between parameters. The script /bin/chandev will be called automatically on startup or a machine check of a device as follows.
/bin/chandev <start starting_devnames> <machine_check (devnames pre_recovery_action_status) (post_recovery_action_status)>. /bin/chandev <start starting_devnames> <machine_check (devnames pre_recovery_action_status) (post_recovery_action_status)>.
The chandev layer doesn't open stdin stdout or stderr so it is advisable that you add the following lines to the start of your script.
.It
#!/bin/bash
.It
exec >/dev/console 2>&1 0>&1
.El
e.g. if tr0 & ctc0 were starting up & eth0 & eth1 didn't recover from a gone machine check at the same instant the parameters would be. e.g. if tr0 & ctc0 were starting up & eth0 & eth1 didn't recover from a gone machine check at the same instant the parameters would be.
......
#!/bin/sh
#
# config3270 -- Autoconfigure /dev/3270/* and /etc/inittab
#
# Usage:
# config3270
#
# Output:
# /tmp/mkdev3270
#
# Operation:
# 1. Run this script
# 2. Run the script it produces: /tmp/mkdev3270
# 3. Issue "telinit q" or reboot, as appropriate.
#
P=/proc/tty/driver/tty3270
ROOT=
D=$ROOT/dev
SUBD=3270
TTY=$SUBD/tty
TUB=$SUBD/tub
SCR=$ROOT/tmp/mkdev3270
SCRTMP=$SCR.a
GETTYLINE=:2345:respawn:/sbin/mingetty
INITTAB=$ROOT/etc/inittab
NINITTAB=$ROOT/etc/NEWinittab
OINITTAB=$ROOT/etc/OLDinittab
ADDNOTE=\\"# Additional mingettys for the 3270/tty* driver, tub3270 ---\\"
if ! ls $P > /dev/null 2>&1; then
modprobe tub3270 > /dev/null 2>&1
fi
ls $P > /dev/null 2>&1 || exit 1
# Initialize two files, one for /dev/3270 commands and one
# to replace the /etc/inittab file (old one saved in OLDinittab)
echo "#!/bin/sh" > $SCR || exit 1
echo " " >> $SCR
echo "# Script built by /sbin/config3270" >> $SCR
echo rm -rf "$D/$SUBD/*" >> $SCR
echo "grep -v $TTY $INITTAB > $NINITTAB" > $SCRTMP || exit 1
echo "echo $ADDNOTE >> $NINITTAB" >> $SCRTMP
echo mkdir -p $D/$SUBD >> $SCR
# Now query the tub3270 driver for 3270 device information
# and add appropriate mknod and mingetty lines to our files
echo what=config > $P
while read devno maj min;do
if [ $min = 0 ]; then
fsmaj=$maj
echo mknod $D/$TUB c $fsmaj 0 >> $SCR
echo chmod 666 $D/$TUB >> $SCR
elif [ $maj = CONSOLE ]; then
echo mknod $D/$TUB$devno c $fsmaj $min >> $SCR
else
echo mknod $D/$TTY$devno c $maj $min >>$SCR
echo mknod $D/$TUB$devno c $fsmaj $min >> $SCR
echo "echo t$min$GETTYLINE $TTY$devno >> $NINITTAB" >> $SCRTMP
fi
done < $P
echo mv $INITTAB $OINITTAB >> $SCRTMP || exit 1
echo mv $NINITTAB $INITTAB >> $SCRTMP
cat $SCRTMP >> $SCR
rm $SCRTMP
exit 0
This diff is collapsed.
Pro Audio Spectrum 16 for 2.3.99 and later Pro Audio Spectrum 16 for 2.3.99 and later
========================================= =========================================
by Thomas Molina (tmolina@home.com) by Thomas Molina (tmolina@home.com)
last modified 26 Mar 2000 last modified 3 Mar 2001
Acknowledgement to Axel Boldt (boldt@math.ucsb.edu) for stuff taken Acknowledgement to Axel Boldt (boldt@math.ucsb.edu) for stuff taken
from Configure.help, Riccardo Facchetti for stuff from README.OSS, from Configure.help, Riccardo Facchetti for stuff from README.OSS,
and others whose names I could not find. and others whose names I could not find.
...@@ -48,14 +48,6 @@ select some options automatically as well. ...@@ -48,14 +48,6 @@ select some options automatically as well.
if you want to use the SB emulation of PAS16. It's also possible to if you want to use the SB emulation of PAS16. It's also possible to
the emulation if you want to use a true SB card together with PAS16 the emulation if you want to use a true SB card together with PAS16
(there is another question about this that is asked later). (there is another question about this that is asked later).
"Sound Blaster support",
- Answer 'y' if you have an original SB card made by Creative Labs
or a full 100% hardware compatible clone (like Thunderboard or
SM Games). If your card was in the list of supported cards (above),
please look at the card specific instructions later in this file
before answering this question. For an unknown card you may answer
'y' if the card claims to be SB compatible.
Enable this option also with PAS16.
"Generic OPL2/OPL3 FM synthesizer support", "Generic OPL2/OPL3 FM synthesizer support",
- Answer 'y' if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4). - Answer 'y' if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
...@@ -113,27 +105,13 @@ CONFIG_SOUND_PAS ...@@ -113,27 +105,13 @@ CONFIG_SOUND_PAS
Answer Y only if you have a Pro Audio Spectrum 16, ProAudio Studio Answer Y only if you have a Pro Audio Spectrum 16, ProAudio Studio
16 or Logitech SoundMan 16 sound card. Don't answer Y if you have 16 or Logitech SoundMan 16 sound card. Don't answer Y if you have
some other card made by Media Vision or Logitech since they are not some other card made by Media Vision or Logitech since they are not
PAS16 compatible. PAS16 compatible. It is not necessary to enable the separate
Sound Blaster support; it is included in the PAS driver.
If you compile the driver into the kernel, you have to add If you compile the driver into the kernel, you have to add
"pas2=<io>,<irq>,<dma>,<dma2>,<sbio>,<sbirq>,<sbdma>,<sbdma2> "pas2=<io>,<irq>,<dma>,<dma2>,<sbio>,<sbirq>,<sbdma>,<sbdma2>
to the kernel command line. to the kernel command line.
100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
CONFIG_SOUND_SB
Answer Y if you have an original Sound Blaster card made by Creative
Labs or a 100% hardware compatible clone (like the Thunderboard or
SM Games). For an unknown card you may answer Y if the card claims
to be Sound Blaster-compatible. The PAS16 has 8-bit Soundblaster
support, so you can answer Y here for it.
Please read the file Documentation/sound/Soundblaster.
If you compile the driver into the kernel and don't want to use isapnp,
you have to add "sb=<io>,<irq>,<dma>,<dma2>" to the kernel command line.
You can say M here to compile this driver as a module; the module is
called sb.o.
FM Synthesizer (YM3812/OPL-3) support FM Synthesizer (YM3812/OPL-3) support
CONFIG_SOUND_YM3812 CONFIG_SOUND_YM3812
Answer Y if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4). Answer Y if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
...@@ -167,7 +145,7 @@ CONFIG_SOUND_OSS=y ...@@ -167,7 +145,7 @@ CONFIG_SOUND_OSS=y
CONFIG_SOUND_TRACEINIT=y CONFIG_SOUND_TRACEINIT=y
CONFIG_SOUND_DMAP=y CONFIG_SOUND_DMAP=y
CONFIG_SOUND_PAS=y CONFIG_SOUND_PAS=y
CONFIG_SOUND_SB=y CONFIG_SOUND_SB=n
CONFIG_SOUND_YM3812=m CONFIG_SOUND_YM3812=m
I have also included the following append line in /etc/lilo.conf: I have also included the following append line in /etc/lilo.conf:
......
In Documentation/sound/README.OSS was a remark saying noone was sure the
mixer on the PCM1-pro worked with the ACI driver. Well, it does.
I've been using the drivers for the MAD16 and the driver for the mixer
since kernel 2.0.32 with a MiroSound PCM1-pro and it works great.
I've got it working with the following configuration:
MAD16 audio I/O base = 530
MAD16 audio IRQ = 7
MAD16 Audio DMA = 1
MAD16 MIDI I/O = 330
MAD16 MIDI IRQ = 9
And I've enabled the ACI mixer (miro PCM12) .
Bas van der Linden.
...@@ -17,6 +17,7 @@ they are gone forever. Keeping this in mind and with a grain of salt this ...@@ -17,6 +17,7 @@ they are gone forever. Keeping this in mind and with a grain of salt this
document can be still interesting and very helpful. document can be still interesting and very helpful.
[ File edited 17.01.1999 - Riccardo Facchetti ] [ File edited 17.01.1999 - Riccardo Facchetti ]
[ Edited miroSOUND section 17.09.2000 - Robert Siemer ]
OSS/Free version 3.8 release notes OSS/Free version 3.8 release notes
---------------------------------- ----------------------------------
...@@ -1325,26 +1326,38 @@ and kernel failures when sound is used. ...@@ -1325,26 +1326,38 @@ and kernel failures when sound is used.
miroSOUND miroSOUND
--------- ---------
The miroSOUND PCM12 has been used successfully. This card is based on The miroSOUND PCM1-pro, PCM12 and PCM20 radio has been used
the MAD16, OPL4, and CS4231A chips and everything said in the section successfully. This card is based on the MAD16, OPL4, and CS4231A chips
about MAD16 cards applies here, too. The only major difference between and everything said in the section about MAD16 cards applies here,
the PCM12 and other MAD16 cards is that instead of the mixer in the too. The only major difference between the PCMxx and other MAD16 cards
CS4231 codec a separate mixer controlled by an on-board 80C32 is that instead of the mixer in the CS4231 codec a separate mixer
microcontroller is used. Control of the mixer takes place via the ACI controlled by an on-board 80C32 microcontroller is used. Control of
(miro's audio control interface) protocol that is implemented in a the mixer takes place via the ACI (miro's audio control interface)
separate lowlevel driver. Make sure you compile this ACI driver protocol that is implemented in a separate lowlevel driver. Make sure
together with the normal MAD16 support when you use a miroSOUND PCM12 you compile this ACI driver together with the normal MAD16 support
card. The ACI mixer is controlled by /dev/mixer and the CS4231 mixer when you use a miroSOUND PCMxx card. The ACI mixer is controlled by
by /dev/mixer2. You usually don't want to change anything on the /dev/mixer and the CS4231 mixer by /dev/mixer1 (depends on load
CS4231 mixer. time). Only in special cases you want to change something on the CS4231
mixer.
The miroSOUND PCM12 is capable of full duplex operation (simultaneous
PCM replay and recording), which allows you to implement nice The miroSOUND PCM12 and PCM20 radio is capable of full duplex
real-time signal processing audio effect software and network operation (simultaneous PCM replay and recording), which allows you to
telephones. The ACI mixer has to be configured into a special "solo" implement nice real-time signal processing audio effect software and
network telephones. The ACI mixer has to be switched into the "solo"
mode for duplex operation in order to avoid feedback caused by the mode for duplex operation in order to avoid feedback caused by the
mixer (input hears output signal). See lowlevel/aci.c for details on mixer (input hears output signal). You can de-/activate this mode
the ioctl() for activating the "solo" mode. through toggleing the record button for the wave controller with an
OSS-mixer.
The PCM20 contains a radio tuner, which is also controlled by
ACI. This radio tuner is supported by the ACI driver together with the
miropcm20.o module. Also the 7-band equalizer is integrated
(limited by the OSS-design). Developement has started and maybe
finished for the RDS decoder on this card, too. You will be able to
read radio text, the program service name, program type and
others. Even the v4l radio module benefits from it with a refined
strength value. See aci.c, radio-miropcm20.c and rds-miropcm20.c for
more details.
The following configuration parameters have worked fine for the PCM12 The following configuration parameters have worked fine for the PCM12
in Markus Kuhn's system, many other configurations might work, too: in Markus Kuhn's system, many other configurations might work, too:
...@@ -1352,13 +1365,8 @@ CONFIG_MAD16_BASE=0x530, CONFIG_MAD16_IRQ=11, CONFIG_MAD16_DMA=3, ...@@ -1352,13 +1365,8 @@ CONFIG_MAD16_BASE=0x530, CONFIG_MAD16_IRQ=11, CONFIG_MAD16_DMA=3,
CONFIG_MAD16_DMA2=0, CONFIG_MAD16_MPU_BASE=0x330, CONFIG_MAD16_MPU_IRQ=10, CONFIG_MAD16_DMA2=0, CONFIG_MAD16_MPU_BASE=0x330, CONFIG_MAD16_MPU_IRQ=10,
DSP_BUFFSIZE=65536, SELECTED_SOUND_OPTIONS=0x00281000. DSP_BUFFSIZE=65536, SELECTED_SOUND_OPTIONS=0x00281000.
The miroSOUND PCM1 pro and the PCM20 are very similar to the PCM12. Bas van der Linden is using his PCM1-pro with a configuration that
Perhaps the same ACI driver also works for these cards, however this differs in: CONFIG_MAD16_IRQ=7, CONFIG_MAD16_DMA=1, CONFIG_MAD16_MPU_IRQ=9
has never actually been tested. The PCM20 contains a radio tuner,
which is also controlled by ACI. This radio tuner is currently not
supported by the ACI driver, but documentation for it was provided by
miro and ACI tuner support could easily be added if someone is really
interested.
Compaq Deskpro XL Compaq Deskpro XL
----------------- -----------------
......
/proc/sound, /dev/sndstat
-------------------------
/proc/sound and /dev/sndstat is not supported by the
driver. To find out whether the driver succeeded loading,
check the kernel log (dmesg).
ALaw/uLaw sample formats ALaw/uLaw sample formats
------------------------ ------------------------
...@@ -59,4 +67,4 @@ See http://www.cgs.fi/~tt/timidity/. ...@@ -59,4 +67,4 @@ See http://www.cgs.fi/~tt/timidity/.
Thomas Sailer Thomas Sailer
sailer@ife.ee.ethz.ch t.sailer@alumni.ethz.ch
/proc/sound, /dev/sndstat
-------------------------
/proc/sound and /dev/sndstat is not supported by the
driver. To find out whether the driver succeeded loading,
check the kernel log (dmesg).
ALaw/uLaw sample formats ALaw/uLaw sample formats
------------------------ ------------------------
...@@ -53,4 +61,4 @@ See http://www.cgs.fi/~tt/timidity/. ...@@ -53,4 +61,4 @@ See http://www.cgs.fi/~tt/timidity/.
Thomas Sailer Thomas Sailer
sailer@ife.ee.ethz.ch t.sailer@alumni.ethz.ch
Recording
---------
Recording does not work on the author's card, but there
is at least one report of it working on later silicon.
The chip behaves differently than described in the data sheet,
likely due to a chip bug. Working around this would require
the help of ESS (for example by publishing an errata sheet),
but ESS has not done so so far.
Also, the chip only supports 24 bit addresses for recording,
which means it cannot work on some Alpha mainboards.
/proc/sound, /dev/sndstat
-------------------------
/proc/sound and /dev/sndstat is not supported by the
driver. To find out whether the driver succeeded loading,
check the kernel log (dmesg).
ALaw/uLaw sample formats ALaw/uLaw sample formats
------------------------ ------------------------
...@@ -45,4 +67,4 @@ MIDI synthesizer ...@@ -45,4 +67,4 @@ MIDI synthesizer
The card has an OPL compatible FM synthesizer. The card has an OPL compatible FM synthesizer.
Thomas Sailer Thomas Sailer
sailer@ife.ee.ethz.ch t.sailer@alumni.ethz.ch
/proc/sound, /dev/sndstat
-------------------------
/proc/sound and /dev/sndstat is not supported by the
driver. To find out whether the driver succeeded loading,
check the kernel log (dmesg).
ALaw/uLaw sample formats ALaw/uLaw sample formats
------------------------ ------------------------
...@@ -70,4 +78,4 @@ comparatively priced Ensoniq products. ...@@ -70,4 +78,4 @@ comparatively priced Ensoniq products.
Thomas Sailer Thomas Sailer
sailer@ife.ee.ethz.ch t.sailer@alumni.ethz.ch
VERSION = 2 VERSION = 2
PATCHLEVEL = 4 PATCHLEVEL = 4
SUBLEVEL = 4 SUBLEVEL = 4
EXTRAVERSION =-pre1 EXTRAVERSION =-pre2
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
# #
# linux/arch/arm/nwfpe/Makefile # linux/arch/arm/nwfpe/Makefile
# #
# Copyright (C) 1998, 1999 Philip Blundell # Copyright (C) 1998, 1999, 2001 Philip Blundell
# #
USE_STANDARD_AS_RULE := true USE_STANDARD_AS_RULE := true
...@@ -14,7 +14,7 @@ obj-n := ...@@ -14,7 +14,7 @@ obj-n :=
list-multi := nwfpe.o list-multi := nwfpe.o
obj-$(CONFIG_NWFPE) += nwfpe.o obj-$(CONFIG_FPE_NWFPE) += nwfpe.o
nwfpe-objs := fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o \ nwfpe-objs := fpa11.o fpa11_cpdo.o fpa11_cpdt.o fpa11_cprt.o \
fpmodule.o fpopcode.o softfloat.o \ fpmodule.o fpopcode.o softfloat.o \
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
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
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __CONFIG_H__
#define __CONFIG_H__
#if 1
#define C_SYMBOL_NAME(foo) foo
#else
#define C_SYMBOL_NAME(foo) _##foo
#endif
#endif
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -23,10 +23,6 @@ ...@@ -23,10 +23,6 @@
#include "fpopcode.h" #include "fpopcode.h"
#include "fpa11.h" #include "fpa11.h"
extern FPA11 *fpa11;
float64 getDoubleConstant(unsigned int);
float64 float64_exp(float64 Fm); float64 float64_exp(float64 Fm);
float64 float64_ln(float64 Fm); float64 float64_ln(float64 Fm);
float64 float64_sin(float64 rFm); float64 float64_sin(float64 rFm);
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Corel Computer Corporation, 1998 (c) Rebel.COM, 1998
(c) Philip Blundell 1998-1999 (c) 1998, 1999 Philip Blundell
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -86,7 +86,7 @@ nwfpe_enter: ...@@ -86,7 +86,7 @@ nwfpe_enter:
ldr r5, [r4, #60] @ get contents of PC; ldr r5, [r4, #60] @ get contents of PC;
sub r8, r5, #4 sub r8, r5, #4
.Lx2: ldrt r0, [r8], #0 @ get actual instruction into r0 .Lx2: ldrt r0, [r8] @ get actual instruction into r0
emulate: emulate:
bl EmulateAll @ emulate the instruction bl EmulateAll @ emulate the instruction
cmp r0, #0 @ was emulation successful cmp r0, #0 @ was emulation successful
...@@ -115,15 +115,17 @@ next: ...@@ -115,15 +115,17 @@ next:
mov r0, r6 @ prepare for EmulateAll() mov r0, r6 @ prepare for EmulateAll()
b emulate @ if r0 != 0, goto EmulateAll b emulate @ if r0 != 0, goto EmulateAll
@ We need to be prepared for the instruction at .Lx1 or .Lx2 @ We need to be prepared for the instructions at .Lx1 and .Lx2
@ to fault. @ to fault. Emit the appropriate exception gunk to fix things up.
@ ??? For some reason, faults can happen at .Lx2 even with a
@ plain LDR instruction. Weird, but it seems harmless.
.section .fixup,"ax" .section .fixup,"ax"
.align .align 2
.Lfix: mov pc, r9 .Lfix: mov pc, r9 @ let the user eat segfaults
.previous .previous
.section __ex_table,"a" .section __ex_table,"a"
.align 3 .align 3
.long .Lx2, .Lfix
.long .Lx1, .Lfix .long .Lx1, .Lfix
.long .Lx2, .Lfix
.previous .previous
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Corel Computer Corporation, 1998 (c) Rebel.COM, 1998
(c) Philip Blundell 1998-1999 (c) Philip Blundell 1998-1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -84,7 +84,7 @@ nwfpe_enter: ...@@ -84,7 +84,7 @@ nwfpe_enter:
beq fpundefinstr @ no, return failure beq fpundefinstr @ no, return failure
next: next:
ldrt r6, [r5], #4 @ get the next instruction and .Lx1: ldrt r6, [r5], #4 @ get the next instruction and
@ increment PC @ increment PC
and r2, r6, #0x0F000000 @ test for FP insns and r2, r6, #0x0F000000 @ test for FP insns
...@@ -110,3 +110,13 @@ next: ...@@ -110,3 +110,13 @@ next:
adr lr, 1b adr lr, 1b
orr lr, lr, #3 orr lr, lr, #3
b EmulateAll @ if r0 != 0, goto EmulateAll b EmulateAll @ if r0 != 0, goto EmulateAll
.Lret: b ret_from_exception @ let the user eat segfaults
@ We need to be prepared for the instruction at .Lx1 to fault.
@ Emit the appropriate exception gunk to fix things up.
.section __ex_table,"a"
.align 3
.long .Lx1
ldr lr, [lr, $(.Lret - .Lx1)/4]
.previous
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -23,8 +23,6 @@ ...@@ -23,8 +23,6 @@
#include "fpopcode.h" #include "fpopcode.h"
#include "fpa11.h" #include "fpa11.h"
floatx80 getExtendedConstant(unsigned int);
floatx80 floatx80_exp(floatx80 Fm); floatx80 floatx80_exp(floatx80 Fm);
floatx80 floatx80_ln(floatx80 Fm); floatx80 floatx80_ln(floatx80 Fm);
floatx80 floatx80_sin(floatx80 rFm); floatx80 floatx80_sin(floatx80 rFm);
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -46,8 +46,8 @@ void resetFPA11(void) ...@@ -46,8 +46,8 @@ void resetFPA11(void)
fpa11->fType[i] = typeNone; fpa11->fType[i] = typeNone;
} }
/* FPSR: set system id to FP_EMULATOR, clear all other bits */ /* FPSR: set system id to FP_EMULATOR, set AC, clear all other bits */
fpa11->fpsr = FP_EMULATOR; fpa11->fpsr = FP_EMULATOR | BIT_AC;
/* FPCR: set SB, AB and DA bits, clear all others */ /* FPCR: set SB, AB and DA bits, clear all others */
#if MAINTAIN_FPCR #if MAINTAIN_FPCR
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Corel Computer Corporation, 1998 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
(c) Philip Blundell, 1999 (c) Philip Blundell, 1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
...@@ -55,6 +55,8 @@ MODULE_DESCRIPTION("NWFPE floating point emulator"); ...@@ -55,6 +55,8 @@ MODULE_DESCRIPTION("NWFPE floating point emulator");
#else #else
#define fp_send_sig send_sig #define fp_send_sig send_sig
#define kern_fp_enter fp_enter #define kern_fp_enter fp_enter
extern char fpe_type[];
#endif #endif
/* kernel function prototypes required */ /* kernel function prototypes required */
...@@ -72,11 +74,33 @@ extern void nwfpe_enter(void); ...@@ -72,11 +74,33 @@ extern void nwfpe_enter(void);
/* Address of user registers on the kernel stack. */ /* Address of user registers on the kernel stack. */
unsigned int *userRegisters; unsigned int *userRegisters;
int __init fpe_init(void) #ifdef MODULE
/*
* Return 0 if we can be unloaded. This can only happen if
* kern_fp_enter is still pointing at nwfpe_enter
*/
static int fpe_unload(void)
{
return (kern_fp_enter == nwfpe_enter) ? 0 : 1;
}
#endif
static int __init fpe_init(void)
{ {
if (sizeof(FPA11) > sizeof(union fp_state)) if (sizeof(FPA11) > sizeof(union fp_state)) {
printk(KERN_ERR "nwfpe: bad structure size\n"); printk(KERN_ERR "nwfpe: bad structure size\n");
else { return -EINVAL;
}
#ifdef MODULE
if (!mod_member_present(&__this_module, can_unload))
return -EINVAL;
__this_module.can_unload = fpe_unload;
#else
if (fpe_type[0] && strcmp(fpe_type, "nwfpe"))
return 0;
#endif
/* Display title, version and copyright information. */ /* Display title, version and copyright information. */
printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 " printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 "
"(c) 1998-1999 Rebel.com\n"); "(c) 1998-1999 Rebel.com\n");
...@@ -84,12 +108,11 @@ int __init fpe_init(void) ...@@ -84,12 +108,11 @@ int __init fpe_init(void)
/* Save pointer to the old FP handler and then patch ourselves in */ /* Save pointer to the old FP handler and then patch ourselves in */
orig_fp_enter = kern_fp_enter; orig_fp_enter = kern_fp_enter;
kern_fp_enter = nwfpe_enter; kern_fp_enter = nwfpe_enter;
}
return 0; return 0;
} }
void __exit fpe_exit(void) static void __exit fpe_exit(void)
{ {
/* Restore the values we saved earlier. */ /* Restore the values we saved earlier. */
kern_fp_enter = orig_fp_enter; kern_fp_enter = orig_fp_enter;
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include "fpmodule.h" #include "fpmodule.h"
#include "fpmodule.inl" #include "fpmodule.inl"
static floatx80 floatx80Constant[] = { const floatx80 floatx80Constant[] = {
{ 0x0000, 0x0000000000000000ULL}, /* extended 0.0 */ { 0x0000, 0x0000000000000000ULL}, /* extended 0.0 */
{ 0x3fff, 0x8000000000000000ULL}, /* extended 1.0 */ { 0x3fff, 0x8000000000000000ULL}, /* extended 1.0 */
{ 0x4000, 0x8000000000000000ULL}, /* extended 2.0 */ { 0x4000, 0x8000000000000000ULL}, /* extended 2.0 */
...@@ -37,7 +37,7 @@ static floatx80 floatx80Constant[] = { ...@@ -37,7 +37,7 @@ static floatx80 floatx80Constant[] = {
{ 0x4002, 0xa000000000000000ULL} /* extended 10.0 */ { 0x4002, 0xa000000000000000ULL} /* extended 10.0 */
}; };
static float64 float64Constant[] = { const float64 float64Constant[] = {
0x0000000000000000ULL, /* double 0.0 */ 0x0000000000000000ULL, /* double 0.0 */
0x3ff0000000000000ULL, /* double 1.0 */ 0x3ff0000000000000ULL, /* double 1.0 */
0x4000000000000000ULL, /* double 2.0 */ 0x4000000000000000ULL, /* double 2.0 */
...@@ -48,7 +48,7 @@ static float64 float64Constant[] = { ...@@ -48,7 +48,7 @@ static float64 float64Constant[] = {
0x4024000000000000ULL /* double 10.0 */ 0x4024000000000000ULL /* double 10.0 */
}; };
static float32 float32Constant[] = { const float32 float32Constant[] = {
0x00000000, /* single 0.0 */ 0x00000000, /* single 0.0 */
0x3f800000, /* single 1.0 */ 0x3f800000, /* single 1.0 */
0x40000000, /* single 2.0 */ 0x40000000, /* single 2.0 */
...@@ -59,21 +59,6 @@ static float32 float32Constant[] = { ...@@ -59,21 +59,6 @@ static float32 float32Constant[] = {
0x41200000 /* single 10.0 */ 0x41200000 /* single 10.0 */
}; };
floatx80 getExtendedConstant(const unsigned int nIndex)
{
return floatx80Constant[nIndex];
}
float64 getDoubleConstant(const unsigned int nIndex)
{
return float64Constant[nIndex];
}
float32 getSingleConstant(const unsigned int nIndex)
{
return float32Constant[nIndex];
}
unsigned int getTransferLength(const unsigned int opcode) unsigned int getTransferLength(const unsigned int opcode)
{ {
unsigned int nRc; unsigned int nRc;
...@@ -135,10 +120,10 @@ unsigned int getDestinationSize(const unsigned int opcode) ...@@ -135,10 +120,10 @@ unsigned int getDestinationSize(const unsigned int opcode)
return(nRc); return(nRc);
} }
/* contition code lookup table /* condition code lookup table
index into the table is test code: EQ, NE, ... LT, GT, AL, NV index into the table is test code: EQ, NE, ... LT, GT, AL, NV
bit position in short is condition code: NZCV */ bit position in short is condition code: NZCV */
unsigned short aCC[16] = { static const unsigned short aCC[16] = {
0xF0F0, // EQ == Z set 0xF0F0, // EQ == Z set
0x0F0F, // NE 0x0F0F, // NE
0xCCCC, // CS == C set 0xCCCC, // CS == C set
......
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -366,11 +366,25 @@ TABLE 5 ...@@ -366,11 +366,25 @@ TABLE 5
/* Get the rounding mode from the opcode. */ /* Get the rounding mode from the opcode. */
#define getRoundingMode(opcode) ((opcode & MASK_ROUNDING_MODE) >> 5) #define getRoundingMode(opcode) ((opcode & MASK_ROUNDING_MODE) >> 5)
float32 getSingleConstant(const unsigned int nIndex); static inline const floatx80 getExtendedConstant(const unsigned int nIndex)
float64 getDoubleConstant(const unsigned int nIndex); {
floatx80 getExtendedConstant(const unsigned int nIndex); extern const floatx80 floatx80Constant[];
return floatx80Constant[nIndex];
unsigned int getRegisterCount(const unsigned int opcode); }
unsigned int getDestinationSize(const unsigned int opcode);
static inline const float64 getDoubleConstant(const unsigned int nIndex)
{
extern const float64 float64Constant[];
return float64Constant[nIndex];
}
static inline const float32 getSingleConstant(const unsigned int nIndex)
{
extern const float32 float32Constant[];
return float32Constant[nIndex];
}
extern unsigned int getRegisterCount(const unsigned int opcode);
extern unsigned int getDestinationSize(const unsigned int opcode);
#endif #endif
/* /*
NetWinder Floating Point Emulator NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999 (c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org> Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
...@@ -23,8 +23,6 @@ ...@@ -23,8 +23,6 @@
#include "fpopcode.h" #include "fpopcode.h"
#include "fpa11.h" #include "fpa11.h"
float32 getSingleConstant(unsigned int);
float32 float32_exp(float32 Fm); float32 float32_exp(float32 Fm);
float32 float32_ln(float32 Fm); float32 float32_ln(float32 Fm);
float32 float32_sin(float32 rFm); float32 float32_sin(float32 rFm);
......
...@@ -14,14 +14,8 @@ ...@@ -14,14 +14,8 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
/* #ifndef __APCS_32__
* Make sure that the compiler and target are compatible #error APCS-32 required
*/
#if (defined(__APCS_32__) && defined(CONFIG_CPU_26))
#error Your compiler targets APCS-32 but this kernel requires APCS-26.
#endif
#if (defined(__APCS_26__) && defined(CONFIG_CPU_32))
#error Your compiler targets APCS-26 but this kernel requires APCS-32.
#endif #endif
#define OFF_TSK(n) (unsigned long)&(((struct task_struct *)0)->n) #define OFF_TSK(n) (unsigned long)&(((struct task_struct *)0)->n)
......
# Database of machine macros and numbers # Database of machine macros and numbers
# #
# This file is linux/arch/arm/tools/mach-types
#
# Please do not send patches to this file; it is automatically generated! # Please do not send patches to this file; it is automatically generated!
# To add an entry into this database, please see Documentation/arm/README, # To add an entry into this database, please see Documentation/arm/README,
# or contact rmk@arm.linux.org.uk # or contact rmk@arm.linux.org.uk
# #
# Last update: Fri Feb 9 22:27:32 2001 # Last update: Sat Apr 7 09:45:09 2001
# #
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
# #
...@@ -35,7 +37,7 @@ p720t ARCH_P720T P720T 24 ...@@ -35,7 +37,7 @@ p720t ARCH_P720T P720T 24
assabet SA1100_ASSABET ASSABET 25 assabet SA1100_ASSABET ASSABET 25
victor SA1100_VICTOR VICTOR 26 victor SA1100_VICTOR VICTOR 26
lart SA1100_LART LART 27 lart SA1100_LART LART 27
ranger ARCH_RANGER RANGER 28 ranger SA1100_RANGER RANGER 28
graphicsclient SA1100_GRAPHICSCLIENT GRAPHICSCLIENT 29 graphicsclient SA1100_GRAPHICSCLIENT GRAPHICSCLIENT 29
xp860 SA1100_XP860 XP860 30 xp860 SA1100_XP860 XP860 30
cerf SA1100_CERF CERF 31 cerf SA1100_CERF CERF 31
...@@ -48,7 +50,7 @@ accelent_l7200 ARCH_L7200_ACCELENT ACCELENT_L7200 37 ...@@ -48,7 +50,7 @@ accelent_l7200 ARCH_L7200_ACCELENT ACCELENT_L7200 37
netport SA1100_NETPORT NETPORT 38 netport SA1100_NETPORT NETPORT 38
pangolin SA1100_PANGOLIN PANGOLIN 39 pangolin SA1100_PANGOLIN PANGOLIN 39
yopy SA1100_YOPY YOPY 40 yopy SA1100_YOPY YOPY 40
coolidge SA1100_COOLIDGE coolidge 41 coolidge SA1100_COOLIDGE COOLIDGE 41
huw_webpanel SA1100_HUW_WEBPANEL HUW_WEBPANEL 42 huw_webpanel SA1100_HUW_WEBPANEL HUW_WEBPANEL 42
spotme ARCH_SPOTME SPOTME 43 spotme ARCH_SPOTME SPOTME 43
freebird ARCH_FREEBIRD FREEBIRD 44 freebird ARCH_FREEBIRD FREEBIRD 44
...@@ -65,6 +67,16 @@ flexanet ARCH_FLEXANET FLEXANET 54 ...@@ -65,6 +67,16 @@ flexanet ARCH_FLEXANET FLEXANET 54
webpal ARCH_WEBPAL WEBPAL 55 webpal ARCH_WEBPAL WEBPAL 55
linpda SA1100_LINPDA LINPDA 56 linpda SA1100_LINPDA LINPDA 56
anakin ARCH_ANAKIN ANAKIN 57 anakin ARCH_ANAKIN ANAKIN 57
mvi SA1100_MVI MVI 58
jupiter SA1100_JUPITER JUPITER 59
psionw ARCH_PSIONW PSIONW 60
aln SA1100_ALN ALN 61
camelot ARCH_CAMELOT CAMELOT 62
gds2200 SA1100_GDS2200 GDS2200 63
psion_series7 SA1100_PSION_SERIES7 PSION_SERIES7 64
xfile SA1100_XFILE XFILE 65
accelent_ep9312 ARCH_ACCELENT_EP9312 ACCELENT_EP9312 66
ic200 ARCH_IC200 IC200 67
# The following are unallocated # The following are unallocated
empeg SA1100_EMPEG EMPEG empeg SA1100_EMPEG EMPEG
...@@ -81,13 +81,8 @@ start_sys_seg: .word SYSSEG ...@@ -81,13 +81,8 @@ start_sys_seg: .word SYSSEG
type_of_loader: .byte 0 # = 0, old one (LILO, Loadlin, type_of_loader: .byte 0 # = 0, old one (LILO, Loadlin,
# Bootlin, SYSLX, bootsect...) # Bootlin, SYSLX, bootsect...)
# Else it is set by the loader: # See Documentation/i386/boot.txt for
# 0xTV: T=0 for LILO # assigned ids
# T=1 for Loadlin
# T=2 for bootsect-loader
# T=3 for SYSLX
# T=4 for ETHERBOOT
# V = version
# flags, unused bits must be zero (RFU) bit within loadflags # flags, unused bits must be zero (RFU) bit within loadflags
loadflags: loadflags:
......
...@@ -47,11 +47,13 @@ choice 'Processor family' \ ...@@ -47,11 +47,13 @@ choice 'Processor family' \
if [ "$CONFIG_M386" = "y" ]; then if [ "$CONFIG_M386" = "y" ]; then
define_bool CONFIG_X86_CMPXCHG n define_bool CONFIG_X86_CMPXCHG n
define_bool CONFIG_X86_XADD n
define_int CONFIG_X86_L1_CACHE_SHIFT 4 define_int CONFIG_X86_L1_CACHE_SHIFT 4
else else
define_bool CONFIG_X86_WP_WORKS_OK y define_bool CONFIG_X86_WP_WORKS_OK y
define_bool CONFIG_X86_INVLPG y define_bool CONFIG_X86_INVLPG y
define_bool CONFIG_X86_CMPXCHG y define_bool CONFIG_X86_CMPXCHG y
define_bool CONFIG_X86_XADD y
define_bool CONFIG_X86_BSWAP y define_bool CONFIG_X86_BSWAP y
define_bool CONFIG_X86_POPAD_OK y define_bool CONFIG_X86_POPAD_OK y
fi fi
......
...@@ -45,6 +45,7 @@ void do_machine_check(struct pt_regs * regs, long error_code) ...@@ -45,6 +45,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
printk(" at %08x%08x", printk(" at %08x%08x",
high, low); high, low);
} }
printk("\n");
/* Clear it */ /* Clear it */
wrmsr(0x401+i*4, 0UL, 0UL); wrmsr(0x401+i*4, 0UL, 0UL);
/* Serialize */ /* Serialize */
......
...@@ -100,6 +100,7 @@ EXPORT_SYMBOL_NOVERS(__put_user_4); ...@@ -100,6 +100,7 @@ EXPORT_SYMBOL_NOVERS(__put_user_4);
EXPORT_SYMBOL(strtok); EXPORT_SYMBOL(strtok);
EXPORT_SYMBOL(strpbrk); EXPORT_SYMBOL(strpbrk);
EXPORT_SYMBOL(simple_strtol); EXPORT_SYMBOL(simple_strtol);
EXPORT_SYMBOL(strstr);
EXPORT_SYMBOL(strncpy_from_user); EXPORT_SYMBOL(strncpy_from_user);
EXPORT_SYMBOL(__strncpy_from_user); EXPORT_SYMBOL(__strncpy_from_user);
......
...@@ -94,8 +94,6 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode) ...@@ -94,8 +94,6 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
goto out_unlock; goto out_unlock;
memset(mm->context.segments, 0, LDT_ENTRIES*LDT_ENTRY_SIZE); memset(mm->context.segments, 0, LDT_ENTRIES*LDT_ENTRY_SIZE);
if (atomic_read(&mm->mm_users) > 1)
printk(KERN_WARNING "LDT allocated for cloned task!\n");
/* /*
* Possibly do an SMP cross-call to other CPUs to reload * Possibly do an SMP cross-call to other CPUs to reload
* their LDTs? * their LDTs?
......
...@@ -231,6 +231,20 @@ ...@@ -231,6 +231,20 @@
v1.37 v1.37
20001109 H. Peter Anvin <hpa@zytor.com> 20001109 H. Peter Anvin <hpa@zytor.com>
Use the new centralized CPU feature detects. Use the new centralized CPU feature detects.
v1.38
20010309 Dave Jones <davej@suse.de>
Add support for Cyrix III.
v1.39
20010312 Dave Jones <davej@suse.de>
Ugh, I broke AMD support.
Reworked fix by Troels Walsted Hansen <troels@thule.no>
v1.40
20010327 Dave Jones <davej@suse.de>
Adapted Cyrix III support to include VIA C3.
*/ */
#include <linux/types.h> #include <linux/types.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -250,6 +264,7 @@ ...@@ -250,6 +264,7 @@
#include <linux/devfs_fs_kernel.h> #include <linux/devfs_fs_kernel.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/pci.h>
#define MTRR_NEED_STRINGS #define MTRR_NEED_STRINGS
#include <asm/mtrr.h> #include <asm/mtrr.h>
#include <linux/init.h> #include <linux/init.h>
...@@ -269,7 +284,7 @@ ...@@ -269,7 +284,7 @@
#include <asm/hardirq.h> #include <asm/hardirq.h>
#include <linux/irq.h> #include <linux/irq.h>
#define MTRR_VERSION "1.37 (20001109)" #define MTRR_VERSION "1.40 (20010327)"
#define TRUE 1 #define TRUE 1
#define FALSE 0 #define FALSE 0
...@@ -464,6 +479,27 @@ static unsigned int get_num_var_ranges (void) ...@@ -464,6 +479,27 @@ static unsigned int get_num_var_ranges (void)
static int have_wrcomb (void) static int have_wrcomb (void)
{ {
unsigned long config, dummy; unsigned long config, dummy;
struct pci_dev *dev = NULL;
/* ServerWorks LE chipsets have problems with write-combining
Don't allow it and leave room for other chipsets to be tagged */
if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) != NULL) {
switch(dev->vendor) {
case PCI_VENDOR_ID_SERVERWORKS:
switch (dev->device) {
case PCI_DEVICE_ID_SERVERWORKS_LE:
return 0;
break;
default:
break;
}
break;
default:
break;
}
}
switch ( mtrr_if ) switch ( mtrr_if )
{ {
...@@ -1777,6 +1813,7 @@ static void compute_ascii (void) ...@@ -1777,6 +1813,7 @@ static void compute_ascii (void)
} }
devfs_set_file_size (devfs_handle, ascii_buf_bytes); devfs_set_file_size (devfs_handle, ascii_buf_bytes);
# ifdef CONFIG_PROC_FS # ifdef CONFIG_PROC_FS
if (proc_root_mtrr)
proc_root_mtrr->size = ascii_buf_bytes; proc_root_mtrr->size = ascii_buf_bytes;
# endif /* CONFIG_PROC_FS */ # endif /* CONFIG_PROC_FS */
} /* End Function compute_ascii */ } /* End Function compute_ascii */
...@@ -1938,6 +1975,7 @@ static int __init mtrr_setup(void) ...@@ -1938,6 +1975,7 @@ static int __init mtrr_setup(void)
get_mtrr = intel_get_mtrr; get_mtrr = intel_get_mtrr;
set_mtrr_up = intel_set_mtrr_up; set_mtrr_up = intel_set_mtrr_up;
switch (boot_cpu_data.x86_vendor) { switch (boot_cpu_data.x86_vendor) {
case X86_VENDOR_AMD: case X86_VENDOR_AMD:
/* The original Athlon docs said that /* The original Athlon docs said that
total addressable memory is 44 bits wide. total addressable memory is 44 bits wide.
...@@ -1956,12 +1994,27 @@ static int __init mtrr_setup(void) ...@@ -1956,12 +1994,27 @@ static int __init mtrr_setup(void)
size_and_mask = ~size_or_mask & 0xfff00000; size_and_mask = ~size_or_mask & 0xfff00000;
break; break;
} }
size_or_mask = 0xff000000; /* 36 bits */
size_and_mask = 0x00f00000;
break;
case X86_VENDOR_CENTAUR:
/* Cyrix III has Intel style MTRRs, but doesn't support PAE */
if (boot_cpu_data.x86 == 6 &&
(boot_cpu_data.x86_model == 6 ||
boot_cpu_data.x86_model == 7)) {
size_or_mask = 0xfff00000; /* 32 bits */
size_and_mask = 0;
}
break;
default: default:
/* Intel, etc. */ /* Intel, etc. */
size_or_mask = 0xff000000; /* 36 bits */ size_or_mask = 0xff000000; /* 36 bits */
size_and_mask = 0x00f00000; size_and_mask = 0x00f00000;
break; break;
} }
} else if ( test_bit(X86_FEATURE_K6_MTRR, &boot_cpu_data.x86_capability) ) { } else if ( test_bit(X86_FEATURE_K6_MTRR, &boot_cpu_data.x86_capability) ) {
/* Pre-Athlon (K6) AMD CPU MTRRs */ /* Pre-Athlon (K6) AMD CPU MTRRs */
mtrr_if = MTRR_IF_AMD_K6; mtrr_if = MTRR_IF_AMD_K6;
...@@ -2072,8 +2125,10 @@ int __init mtrr_init(void) ...@@ -2072,8 +2125,10 @@ int __init mtrr_init(void)
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
proc_root_mtrr = create_proc_entry ("mtrr", S_IWUSR | S_IRUGO, &proc_root); proc_root_mtrr = create_proc_entry ("mtrr", S_IWUSR | S_IRUGO, &proc_root);
if (proc_root_mtrr) {
proc_root_mtrr->owner = THIS_MODULE; proc_root_mtrr->owner = THIS_MODULE;
proc_root_mtrr->proc_fops = &mtrr_fops; proc_root_mtrr->proc_fops = &mtrr_fops;
}
#endif #endif
#ifdef CONFIG_DEVFS_FS #ifdef CONFIG_DEVFS_FS
devfs_handle = devfs_register (NULL, "cpu/mtrr", DEVFS_FL_DEFAULT, 0, 0, devfs_handle = devfs_register (NULL, "cpu/mtrr", DEVFS_FL_DEFAULT, 0, 0,
......
This diff is collapsed.
#include <linux/config.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/sched.h> #include <linux/sched.h>
...@@ -5,6 +6,7 @@ ...@@ -5,6 +6,7 @@
#include <asm/i387.h> #include <asm/i387.h>
#include <asm/hardirq.h> #include <asm/hardirq.h>
/* /*
* MMX 3DNow! library helper functions * MMX 3DNow! library helper functions
* *
...@@ -95,6 +97,13 @@ void *_mmx_memcpy(void *to, const void *from, size_t len) ...@@ -95,6 +97,13 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
return p; return p;
} }
#ifdef CONFIG_MK7
/*
* The K7 has streaming cache bypass load/store. The Cyrix III, K6 and
* other MMX using processors do not.
*/
static void fast_clear_page(void *page) static void fast_clear_page(void *page)
{ {
int i; int i;
...@@ -195,6 +204,118 @@ static void fast_copy_page(void *to, void *from) ...@@ -195,6 +204,118 @@ static void fast_copy_page(void *to, void *from)
kernel_fpu_end(); kernel_fpu_end();
} }
#else
/*
* Generic MMX implementation without K7 specific streaming
*/
static void fast_clear_page(void *page)
{
int i;
if (!(current->flags & PF_USEDFPU))
clts();
else
{
__asm__ __volatile__ ( " fnsave %0; fwait\n"::"m"(current->thread.i387));
current->flags &= ~PF_USEDFPU;
}
__asm__ __volatile__ (
" pxor %%mm0, %%mm0\n" : :
);
for(i=0;i<4096/128;i++)
{
__asm__ __volatile__ (
" movq %%mm0, (%0)\n"
" movq %%mm0, 8(%0)\n"
" movq %%mm0, 16(%0)\n"
" movq %%mm0, 24(%0)\n"
" movq %%mm0, 32(%0)\n"
" movq %%mm0, 40(%0)\n"
" movq %%mm0, 48(%0)\n"
" movq %%mm0, 56(%0)\n"
" movq %%mm0, 64(%0)\n"
" movq %%mm0, 72(%0)\n"
" movq %%mm0, 80(%0)\n"
" movq %%mm0, 88(%0)\n"
" movq %%mm0, 96(%0)\n"
" movq %%mm0, 104(%0)\n"
" movq %%mm0, 112(%0)\n"
" movq %%mm0, 120(%0)\n"
: : "r" (page) : "memory");
page+=128;
}
stts();
}
static void fast_copy_page(void *to, void *from)
{
int i;
if (!(current->flags & PF_USEDFPU))
clts();
else
{
__asm__ __volatile__ ( " fnsave %0; fwait\n"::"m"(current->thread.i387));
current->flags &= ~PF_USEDFPU;
}
__asm__ __volatile__ (
"1: prefetch (%0)\n"
" prefetch 64(%0)\n"
" prefetch 128(%0)\n"
" prefetch 192(%0)\n"
" prefetch 256(%0)\n"
"2: \n"
".section .fixup, \"ax\"\n"
"3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */
" jmp 2b\n"
".previous\n"
".section __ex_table,\"a\"\n"
" .align 4\n"
" .long 1b, 3b\n"
".previous"
: : "r" (from) );
for(i=0; i<4096/64; i++)
{
__asm__ __volatile__ (
"1: prefetch 320(%0)\n"
"2: movq (%0), %%mm0\n"
" movq 8(%0), %%mm1\n"
" movq 16(%0), %%mm2\n"
" movq 24(%0), %%mm3\n"
" movq %%mm0, (%1)\n"
" movq %%mm1, 8(%1)\n"
" movq %%mm2, 16(%1)\n"
" movq %%mm3, 24(%1)\n"
" movq 32(%0), %%mm0\n"
" movq 40(%0), %%mm1\n"
" movq 48(%0), %%mm2\n"
" movq 56(%0), %%mm3\n"
" movq %%mm0, 32(%1)\n"
" movq %%mm1, 40(%1)\n"
" movq %%mm2, 48(%1)\n"
" movq %%mm3, 56(%1)\n"
".section .fixup, \"ax\"\n"
"3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */
" jmp 2b\n"
".previous\n"
".section __ex_table,\"a\"\n"
" .align 4\n"
" .long 1b, 3b\n"
".previous"
: : "r" (from), "r" (to) : "memory");
from+=64;
to+=64;
}
stts();
}
#endif
/* /*
* Favour MMX for page clear and copy. * Favour MMX for page clear and copy.
*/ */
......
...@@ -26,11 +26,15 @@ CFLAGS := $(CFLAGS) $(CFLAGS_PIPE) $(CFLAGS_NSR) ...@@ -26,11 +26,15 @@ CFLAGS := $(CFLAGS) $(CFLAGS_PIPE) $(CFLAGS_NSR)
HEAD := arch/s390/kernel/head.o arch/s390/kernel/init_task.o HEAD := arch/s390/kernel/head.o arch/s390/kernel/init_task.o
SUBDIRS := $(SUBDIRS) arch/s390/mm arch/s390/kernel arch/s390/lib \ SUBDIRS := $(SUBDIRS) arch/s390/mm arch/s390/kernel arch/s390/lib \
drivers/s390 drivers/s390 arch/s390/math-emu
CORE_FILES := arch/s390/mm/mm.o arch/s390/kernel/kernel.o $(CORE_FILES) \ CORE_FILES := arch/s390/mm/mm.o arch/s390/kernel/kernel.o $(CORE_FILES) \
drivers/s390/io.o drivers/s390/io.o
LIBS := $(TOPDIR)/arch/s390/lib/lib.a $(LIBS) $(TOPDIR)/arch/s390/lib/lib.a LIBS := $(TOPDIR)/arch/s390/lib/lib.a $(LIBS) $(TOPDIR)/arch/s390/lib/lib.a
ifeq ($(CONFIG_MATHEMU),y)
CORE_FILES := $(CORE_FILES) arch/s390/math-emu/math-emu.o
endif
all: image listing all: image listing
listing: vmlinux listing: vmlinux
......
...@@ -25,7 +25,7 @@ include $(TOPDIR)/Rules.make ...@@ -25,7 +25,7 @@ include $(TOPDIR)/Rules.make
image: $(CONFIGURE) $(TOPDIR)/vmlinux \ image: $(CONFIGURE) $(TOPDIR)/vmlinux \
iplfba.boot ipleckd.boot ipldump.boot iplfba.boot ipleckd.boot ipldump.boot
$(OBJCOPY) -O binary $(TOPDIR)/vmlinux image $(OBJCOPY) -O binary $(TOPDIR)/vmlinux image
$(NM) $(TOPDIR)/vmlinux | grep -v '\(compiled\)\|\( [aU] \)\|\(\.\)\|\(LASH[RL]DI\)' | sort > $(TOPDIR)/System.map $(NM) $(TOPDIR)/vmlinux | grep -v '\(compiled\)\|\( [aUw] \)\|\(\.\)\|\(LASH[RL]DI\)' | sort > $(TOPDIR)/System.map
listing: ../../../vmlinux listing: ../../../vmlinux
$(OBJDUMP) --disassemble --disassemble-all --disassemble-zeroes --reloc $(TOPDIR)/vmlinux > listing $(OBJDUMP) --disassemble --disassemble-all --disassemble-zeroes --reloc $(TOPDIR)/vmlinux > listing
......
...@@ -28,7 +28,7 @@ endmenu ...@@ -28,7 +28,7 @@ endmenu
mainmenu_option next_comment mainmenu_option next_comment
comment 'Processor type and features' comment 'Processor type and features'
bool 'Symmetric multi-processing support' CONFIG_SMP bool 'Symmetric multi-processing support' CONFIG_SMP
bool 'IEEE FPU emulation' CONFIG_IEEEFPU_EMULATION bool 'IEEE FPU emulation' CONFIG_MATHEMU
endmenu endmenu
mainmenu_option next_comment mainmenu_option next_comment
...@@ -44,7 +44,7 @@ bool 'Networking support' CONFIG_NET ...@@ -44,7 +44,7 @@ bool 'Networking support' CONFIG_NET
bool 'System V IPC' CONFIG_SYSVIPC bool 'System V IPC' CONFIG_SYSVIPC
bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
bool 'Sysctl support' CONFIG_SYSCTL bool 'Sysctl support' CONFIG_SYSCTL
define CONFIG_KCORE ELF define_bool CONFIG_KCORE_ELF y
tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG
...@@ -65,6 +65,6 @@ comment 'Kernel hacking' ...@@ -65,6 +65,6 @@ comment 'Kernel hacking'
if [ "$CONFIG_CTC" = "y" ]; then if [ "$CONFIG_CTC" = "y" ]; then
bool 'Remote GDB kernel debugging' CONFIG_REMOTE_DEBUG bool 'Remote GDB kernel debugging' CONFIG_REMOTE_DEBUG
fi fi
# this does not work. bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
endmenu endmenu
# #
# Automatically generated by make menuconfig: don't edit # Automatically generated make config: don't edit
# #
# CONFIG_ISA is not set # CONFIG_ISA is not set
# CONFIG_EISA is not set # CONFIG_EISA is not set
...@@ -12,12 +12,6 @@ CONFIG_ARCH_S390=y ...@@ -12,12 +12,6 @@ CONFIG_ARCH_S390=y
# #
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
#
# Processor type and features
#
CONFIG_SMP=y
CONFIG_IEEEFPU_EMULATION=y
# #
# Loadable module support # Loadable module support
# #
...@@ -25,6 +19,12 @@ CONFIG_MODULES=y ...@@ -25,6 +19,12 @@ CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set # CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y CONFIG_KMOD=y
#
# Processor type and features
#
CONFIG_SMP=y
CONFIG_MATHEMU=y
# #
# General setup # General setup
# #
...@@ -36,6 +36,7 @@ CONFIG_NET=y ...@@ -36,6 +36,7 @@ CONFIG_NET=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set # CONFIG_BINFMT_MISC is not set
# CONFIG_PROCESS_DEBUG is not set # CONFIG_PROCESS_DEBUG is not set
...@@ -49,9 +50,14 @@ CONFIG_BLK_DEV_RAM=y ...@@ -49,9 +50,14 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=24576 CONFIG_BLK_DEV_RAM_SIZE=24576
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_BLK_DEV_XPRAM=m CONFIG_BLK_DEV_XPRAM=m
#
# S/390 block device drivers
#
CONFIG_DASD=y CONFIG_DASD=y
CONFIG_DASD_ECKD=y CONFIG_DASD_ECKD=y
CONFIG_DASD_FBA=y CONFIG_DASD_FBA=y
# CONFIG_DASD_DIAG is not set
# #
# Multi-device support (RAID and LVM) # Multi-device support (RAID and LVM)
...@@ -63,20 +69,31 @@ CONFIG_MD_RAID0=m ...@@ -63,20 +69,31 @@ CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m CONFIG_MD_RAID1=m
CONFIG_MD_RAID5=m CONFIG_MD_RAID5=m
CONFIG_BLK_DEV_LVM=m CONFIG_BLK_DEV_LVM=m
CONFIG_LVM_PROC_FS=y
# #
# Character device drivers # Character device drivers
# #
CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256 CONFIG_UNIX98_PTY_COUNT=256
#
# S/390 character device drivers
#
CONFIG_3215=y CONFIG_3215=y
CONFIG_3215_CONSOLE=y CONFIG_3215_CONSOLE=y
CONFIG_HWC=y CONFIG_HWC=y
CONFIG_HWC_CONSOLE=y CONFIG_HWC_CONSOLE=y
CONFIG_S390_TAPE=m CONFIG_S390_TAPE=m
#
# S/390 tape interface support
#
CONFIG_S390_TAPE_CHAR=y CONFIG_S390_TAPE_CHAR=y
CONFIG_S390_TAPE_BLOCK=y CONFIG_S390_TAPE_BLOCK=y
#
# S/390 tape hardware support
#
CONFIG_S390_TAPE_3490=y CONFIG_S390_TAPE_3490=y
CONFIG_S390_TAPE_3480=y CONFIG_S390_TAPE_3480=y
...@@ -88,6 +105,10 @@ CONFIG_NETDEVICES=y ...@@ -88,6 +105,10 @@ CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y CONFIG_NET_ETHERNET=y
CONFIG_TR=y CONFIG_TR=y
# CONFIG_FDDI is not set # CONFIG_FDDI is not set
#
# S/390 network device drivers
#
# CONFIG_CHANDEV is not set # CONFIG_CHANDEV is not set
CONFIG_CTC=m CONFIG_CTC=m
CONFIG_IUCV=m CONFIG_IUCV=m
...@@ -109,11 +130,16 @@ CONFIG_IP_MULTICAST=y ...@@ -109,11 +130,16 @@ CONFIG_IP_MULTICAST=y
# CONFIG_IP_PNP is not set # CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set # CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set # CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_INET_ECN is not set # CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set # CONFIG_SYN_COOKIES is not set
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set # CONFIG_KHTTPD is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
#
#
#
# CONFIG_IPX is not set # CONFIG_IPX is not set
# CONFIG_ATALK is not set # CONFIG_ATALK is not set
# CONFIG_DECNET is not set # CONFIG_DECNET is not set
...@@ -138,6 +164,8 @@ CONFIG_IP_MULTICAST=y ...@@ -138,6 +164,8 @@ CONFIG_IP_MULTICAST=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set # CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set # CONFIG_AFFS_FS is not set
...@@ -192,8 +220,6 @@ CONFIG_LOCKD=y ...@@ -192,8 +220,6 @@ CONFIG_LOCKD=y
# CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_MOUNT_SUBDIR is not set
# CONFIG_NCPFS_NDS_DOMAINS is not set
# CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set # CONFIG_NCPFS_EXTRAS is not set
...@@ -211,8 +237,10 @@ CONFIG_IBM_PARTITION=y ...@@ -211,8 +237,10 @@ CONFIG_IBM_PARTITION=y
# CONFIG_SGI_PARTITION is not set # CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set # CONFIG_SUN_PARTITION is not set
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set # CONFIG_NLS is not set
# #
# Kernel hacking # Kernel hacking
# #
# CONFIG_MAGIC_SYSRQ is not set
...@@ -14,14 +14,13 @@ all: kernel.o head.o init_task.o ...@@ -14,14 +14,13 @@ all: kernel.o head.o init_task.o
O_TARGET := kernel.o O_TARGET := kernel.o
export-objs := s390_ksyms.o export-objs := debug.o ebcdic.o irq.o s390_ext.o smp.o s390_ksyms.o
obj-y := lowcore.o entry.o bitmap.o traps.o time.o process.o irq.o \ obj-y := lowcore.o entry.o bitmap.o traps.o time.o process.o irq.o \
setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \ setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
semaphore.o s390fpu.o reipl.o s390_ext.o debug.o semaphore.o s390fpu.o reipl.o s390_ext.o debug.o
obj-$(CONFIG_MODULES) += s390_ksyms.o obj-$(CONFIG_MODULES) += s390_ksyms.o
obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_IEEEFPU_EMULATION) += mathemu.o floatlib.o
# #
# Kernel debugging # Kernel debugging
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <asm/ebcdic.h> #include <asm/ebcdic.h>
#include <asm/cpcmd.h>
void cpcmd(char *cmd, char *response, int rlen) void cpcmd(char *cmd, char *response, int rlen)
{ {
......
This diff is collapsed.
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
* Martin Peschke <peschke@fh-brandenburg.de> * Martin Peschke <peschke@fh-brandenburg.de>
*/ */
#include <linux/module.h>
#include <asm/types.h> #include <asm/types.h>
/* /*
...@@ -389,3 +390,11 @@ __u8 _ebc_toupper[256] = ...@@ -389,3 +390,11 @@ __u8 _ebc_toupper[256] =
0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
}; };
EXPORT_SYMBOL_NOVERS(_ascebc_500);
EXPORT_SYMBOL_NOVERS(_ebcasc_500);
EXPORT_SYMBOL_NOVERS(_ascebc);
EXPORT_SYMBOL_NOVERS(_ebcasc);
EXPORT_SYMBOL_NOVERS(_ebc_tolower);
EXPORT_SYMBOL_NOVERS(_ebc_toupper);
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
* S/390 I/O interrupt processing and I/O request processing is * S/390 I/O interrupt processing and I/O request processing is
* implemented in arch/s390/kernel/s390io.c * implemented in arch/s390/kernel/s390io.c
*/ */
#include <linux/module.h>
#include <linux/config.h> #include <linux/config.h>
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -20,7 +21,7 @@ ...@@ -20,7 +21,7 @@
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/timex.h> #include <linux/timex.h>
#include <linux/slab.h> #include <linux/malloc.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/random.h> #include <linux/random.h>
#include <linux/smp.h> #include <linux/smp.h>
...@@ -286,7 +287,7 @@ static inline void get_irqlock(int cpu) ...@@ -286,7 +287,7 @@ static inline void get_irqlock(int cpu)
*/ */
void __global_cli(void) void __global_cli(void)
{ {
unsigned int flags; unsigned long flags;
__save_flags(flags); __save_flags(flags);
if (flags & (1 << EFLAGS_I_SHIFT)) { if (flags & (1 << EFLAGS_I_SHIFT)) {
...@@ -357,48 +358,6 @@ void __global_restore_flags(unsigned long flags) ...@@ -357,48 +358,6 @@ void __global_restore_flags(unsigned long flags)
#endif #endif
/*
* Note : This fuction should be eliminated as it doesn't comply with the
* S/390 irq scheme we have implemented ...
*/
int handle_IRQ_event( unsigned int irq, int cpu, struct pt_regs * regs)
{
struct irqaction * action;
int status;
status = 0;
if ( ioinfo[irq] == INVALID_STORAGE_AREA )
return( -ENODEV);
action = ioinfo[irq]->irq_desc.action;
if (action)
{
status |= 1;
if (!(action->flags & SA_INTERRUPT))
__sti();
do
{
status |= action->flags;
action->handler(irq, action->dev_id, regs);
action = action->next;
} while (action);
if (status & SA_SAMPLE_RANDOM)
add_interrupt_randomness(irq);
__cli();
} /* endif */
return status;
}
void enable_nop(int irq)
{
}
void __init init_IRQ(void) void __init init_IRQ(void)
{ {
...@@ -427,3 +386,8 @@ void init_irq_proc(void) ...@@ -427,3 +386,8 @@ void init_irq_proc(void)
/* For now, nothing... */ /* For now, nothing... */
} }
EXPORT_SYMBOL(__global_cli);
EXPORT_SYMBOL(__global_sti);
EXPORT_SYMBOL(__global_save_flags);
EXPORT_SYMBOL(__global_restore_flags);
EXPORT_SYMBOL(global_bh_lock);
/*
* arch/s390/kernel/irqextras390.c
*
* S390 version
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
* Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
*
* Some channel code by D.J. Barrow
*/
/*
*/
#include<asm/irqextras390.h>
#include<asm/lowcore.h>
#if 0
// fixchannelprogram is now obselete
void fixchannelprogram(orb_bits_t *orbptr)
{
__u32 newAddress=orbptr->ccw_program_address;
fixccws(orbptr->ccw_program_address);
orbptr->ccw_program_address=newAddress;
orbptr->ccw_program_address=(ccw1_t *)(((__u32)orbptr->ccw_program_address));
}
#endif
void fixccws(ccw1_bits_t *ccwptr)
{
for(;;ccwptr++)
{ // Just hope nobody starts doing prefixing
if(!ccwptr->cc)
break;
}
}
This diff is collapsed.
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/misc390.h>
#include <asm/irq.h> #include <asm/irq.h>
spinlock_t semaphore_wake_lock = SPIN_LOCK_UNLOCKED; spinlock_t semaphore_wake_lock = SPIN_LOCK_UNLOCKED;
...@@ -300,12 +299,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp, ...@@ -300,12 +299,10 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
unsigned long fprs[4]; /* fpr 4 and 6 */ unsigned long fprs[4]; /* fpr 4 and 6 */
unsigned long empty[4]; unsigned long empty[4];
#if CONFIG_REMOTE_DEBUG #if CONFIG_REMOTE_DEBUG
gdb_pt_regs childregs; struct gdb_pt_regs childregs;
#else #else
pt_regs childregs; struct pt_regs childregs;
#endif #endif
__u32 pgm_old_ilc; /* single step magic from entry.S */
__u32 pgm_svc_step;
} *frame; } *frame;
frame = (struct stack_frame *) (2*PAGE_SIZE + (unsigned long) p) -1; frame = (struct stack_frame *) (2*PAGE_SIZE + (unsigned long) p) -1;
...@@ -321,7 +318,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp, ...@@ -321,7 +318,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
/* fake return stack for resume(), don't go back to schedule */ /* fake return stack for resume(), don't go back to schedule */
frame->gprs[9] = (unsigned long) frame; frame->gprs[9] = (unsigned long) frame;
frame->pgm_svc_step = 0; /* Nope we aren't single stepping an svc */ frame->childregs.old_ilc = -1; /* We are not single stepping an svc */
/* save fprs, if used in last task */ /* save fprs, if used in last task */
save_fp_regs(&p->thread.fp_regs); save_fp_regs(&p->thread.fp_regs);
p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _SEGMENT_TABLE; p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _SEGMENT_TABLE;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -12,7 +12,8 @@ endif ...@@ -12,7 +12,8 @@ endif
L_TARGET = lib.a L_TARGET = lib.a
obj-y = checksum.o delay.o memset.o strcmp.o strncpy.o uaccess.o obj-y = checksum.o delay.o memset.o misaligned.o strcmp.o strncpy.o uaccess.o
export-objs += misaligned.o
include $(TOPDIR)/Rules.make include $(TOPDIR)/Rules.make
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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