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
Eine deutsche Version dieser Datei finden Sie unter
<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).
......@@ -54,7 +54,7 @@ o binutils 2.9.1.0.25 # ld -v
o util-linux 2.10o # fdformat --version
o modutils 2.4.2 # insmod -V
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 PPP 2.4.0 # pppd --version
o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version
......@@ -148,7 +148,7 @@ Modutils
--------
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
/lib/modules/`uname -r`/ has been made more sane. This change also
requires that you upgrade to a recent modutils.
......@@ -227,7 +227,7 @@ PPP
The PPP driver has been restructured to support multilink and to
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
which can be made by:
......@@ -307,16 +307,16 @@ o <ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils/v2.4/>
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
---------
o <ftp://download.sourceforge.net/pub/sourceforge/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.tar.gz>
o <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.19-0.src.rpm>
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
-----------
......@@ -347,7 +347,7 @@ Network
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
------------
......
ARM Linux 2.4.0test1
====================
ARM Linux 2.4
=============
Please check ftp.arm.linux.org.uk:/pub/armlinux for latest updates.
......@@ -7,9 +7,8 @@ Compilation of kernel
---------------------
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
and EGCS are good compilers. Note that GCC-2.7.2.2 ELF is rare, and
you probably don't have it.
generating ARM ELF code with GNU extensions. GCC 2.95.1 and EGCS 1.1.2
are good compilers.
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
......@@ -166,4 +165,4 @@ Kernel entry (head-armv.S)
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.
r: relaxed, 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
TODO
......
......@@ -146,9 +146,16 @@ most of the fields in the header. The following fields should be
filled out, however:
type_of_loader:
If your boot loader has an identifier assigned in
arch/i386/boot/setup.S, enter that value. Otherwise, enter
0xFF here.
If your boot loader has an assigned id (see table below), enter
0xTV here, where T is an identifier for the boot loader and V is
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:
If the protocol version is 2.01 or higher, enter the
......
......@@ -16,11 +16,14 @@ Richard Gooch
these, the ARRs are used to emulate the MTRRs.
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
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
to manipulate your MTRRs. Typically the X server should use
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 #.
.It
Or from the boot command line using the 'chandev=' keyword
.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.
/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.
......
#!/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
=========================================
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
from Configure.help, Riccardo Facchetti for stuff from README.OSS,
and others whose names I could not find.
......@@ -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
the emulation if you want to use a true SB card together with PAS16
(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",
- Answer 'y' if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
......@@ -113,27 +105,13 @@ CONFIG_SOUND_PAS
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
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
"pas2=<io>,<irq>,<dma>,<dma2>,<sbio>,<sbirq>,<sbdma>,<sbdma2>
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
CONFIG_SOUND_YM3812
Answer Y if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
......@@ -167,7 +145,7 @@ CONFIG_SOUND_OSS=y
CONFIG_SOUND_TRACEINIT=y
CONFIG_SOUND_DMAP=y
CONFIG_SOUND_PAS=y
CONFIG_SOUND_SB=y
CONFIG_SOUND_SB=n
CONFIG_SOUND_YM3812=m
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
document can be still interesting and very helpful.
[ File edited 17.01.1999 - Riccardo Facchetti ]
[ Edited miroSOUND section 17.09.2000 - Robert Siemer ]
OSS/Free version 3.8 release notes
----------------------------------
......@@ -1325,26 +1326,38 @@ and kernel failures when sound is used.
miroSOUND
---------
The miroSOUND PCM12 has been used successfully. This card is based on
the MAD16, OPL4, and CS4231A chips and everything said in the section
about MAD16 cards applies here, too. The only major difference between
the PCM12 and other MAD16 cards is that instead of the mixer in the
CS4231 codec a separate mixer controlled by an on-board 80C32
microcontroller is used. Control of the mixer takes place via the ACI
(miro's audio control interface) protocol that is implemented in a
separate lowlevel driver. Make sure you compile this ACI driver
together with the normal MAD16 support when you use a miroSOUND PCM12
card. The ACI mixer is controlled by /dev/mixer and the CS4231 mixer
by /dev/mixer2. You usually don't want to change anything on the
CS4231 mixer.
The miroSOUND PCM12 is capable of full duplex operation (simultaneous
PCM replay and recording), which allows you to implement nice
real-time signal processing audio effect software and network
telephones. The ACI mixer has to be configured into a special "solo"
The miroSOUND PCM1-pro, PCM12 and PCM20 radio has been used
successfully. This card is based on the MAD16, OPL4, and CS4231A chips
and everything said in the section about MAD16 cards applies here,
too. The only major difference between the PCMxx and other MAD16 cards
is that instead of the mixer in the CS4231 codec a separate mixer
controlled by an on-board 80C32 microcontroller is used. Control of
the mixer takes place via the ACI (miro's audio control interface)
protocol that is implemented in a separate lowlevel driver. Make sure
you compile this ACI driver together with the normal MAD16 support
when you use a miroSOUND PCMxx card. The ACI mixer is controlled by
/dev/mixer and the CS4231 mixer by /dev/mixer1 (depends on load
time). Only in special cases you want to change something on the CS4231
mixer.
The miroSOUND PCM12 and PCM20 radio is capable of full duplex
operation (simultaneous PCM replay and recording), which allows you to
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
mixer (input hears output signal). See lowlevel/aci.c for details on
the ioctl() for activating the "solo" mode.
mixer (input hears output signal). You can de-/activate this 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
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,
CONFIG_MAD16_DMA2=0, CONFIG_MAD16_MPU_BASE=0x330, CONFIG_MAD16_MPU_IRQ=10,
DSP_BUFFSIZE=65536, SELECTED_SOUND_OPTIONS=0x00281000.
The miroSOUND PCM1 pro and the PCM20 are very similar to the PCM12.
Perhaps the same ACI driver also works for these cards, however this
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.
Bas van der Linden is using his PCM1-pro with a configuration that
differs in: CONFIG_MAD16_IRQ=7, CONFIG_MAD16_DMA=1, CONFIG_MAD16_MPU_IRQ=9
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
------------------------
......@@ -59,4 +67,4 @@ See http://www.cgs.fi/~tt/timidity/.
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
------------------------
......@@ -53,4 +61,4 @@ See http://www.cgs.fi/~tt/timidity/.
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
------------------------
......@@ -45,4 +67,4 @@ MIDI synthesizer
The card has an OPL compatible FM synthesizer.
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
------------------------
......@@ -70,4 +78,4 @@ comparatively priced Ensoniq products.
Thomas Sailer
sailer@ife.ee.ethz.ch
t.sailer@alumni.ethz.ch
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 4
EXTRAVERSION =-pre1
EXTRAVERSION =-pre2
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
#
# linux/arch/arm/nwfpe/Makefile
#
# Copyright (C) 1998, 1999 Philip Blundell
# Copyright (C) 1998, 1999, 2001 Philip Blundell
#
USE_STANDARD_AS_RULE := true
......@@ -14,7 +14,7 @@ obj-n :=
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 \
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
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -23,10 +23,6 @@
#include "fpopcode.h"
#include "fpa11.h"
extern FPA11 *fpa11;
float64 getDoubleConstant(unsigned int);
float64 float64_exp(float64 Fm);
float64 float64_ln(float64 Fm);
float64 float64_sin(float64 rFm);
......
/*
NetWinder Floating Point Emulator
(c) Corel Computer Corporation, 1998
(c) Philip Blundell 1998-1999
(c) Rebel.COM, 1998
(c) 1998, 1999 Philip Blundell
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -86,7 +86,7 @@ nwfpe_enter:
ldr r5, [r4, #60] @ get contents of PC;
sub r8, r5, #4
.Lx2: ldrt r0, [r8], #0 @ get actual instruction into r0
.Lx2: ldrt r0, [r8] @ get actual instruction into r0
emulate:
bl EmulateAll @ emulate the instruction
cmp r0, #0 @ was emulation successful
......@@ -115,15 +115,17 @@ next:
mov r0, r6 @ prepare for EmulateAll()
b emulate @ if r0 != 0, goto EmulateAll
@ We need to be prepared for the instruction at .Lx1 or .Lx2
@ to fault.
@ We need to be prepared for the instructions at .Lx1 and .Lx2
@ 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"
.align
.Lfix: mov pc, r9
.align 2
.Lfix: mov pc, r9 @ let the user eat segfaults
.previous
.section __ex_table,"a"
.align 3
.long .Lx2, .Lfix
.align 3
.long .Lx1, .Lfix
.long .Lx2, .Lfix
.previous
/*
NetWinder Floating Point Emulator
(c) Corel Computer Corporation, 1998
(c) Rebel.COM, 1998
(c) Philip Blundell 1998-1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -84,7 +84,7 @@ nwfpe_enter:
beq fpundefinstr @ no, return failure
next:
ldrt r6, [r5], #4 @ get the next instruction and
.Lx1: ldrt r6, [r5], #4 @ get the next instruction and
@ increment PC
and r2, r6, #0x0F000000 @ test for FP insns
......@@ -110,3 +110,13 @@ next:
adr lr, 1b
orr lr, lr, #3
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
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -23,8 +23,6 @@
#include "fpopcode.h"
#include "fpa11.h"
floatx80 getExtendedConstant(unsigned int);
floatx80 floatx80_exp(floatx80 Fm);
floatx80 floatx80_ln(floatx80 Fm);
floatx80 floatx80_sin(floatx80 rFm);
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -46,8 +46,8 @@ void resetFPA11(void)
fpa11->fType[i] = typeNone;
}
/* FPSR: set system id to FP_EMULATOR, clear all other bits */
fpa11->fpsr = FP_EMULATOR;
/* FPSR: set system id to FP_EMULATOR, set AC, clear all other bits */
fpa11->fpsr = FP_EMULATOR | BIT_AC;
/* FPCR: set SB, AB and DA bits, clear all others */
#if MAINTAIN_FPCR
......
/*
NetWinder Floating Point Emulator
(c) Corel Computer Corporation, 1998
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
(c) Philip Blundell, 1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
......@@ -55,6 +55,8 @@ MODULE_DESCRIPTION("NWFPE floating point emulator");
#else
#define fp_send_sig send_sig
#define kern_fp_enter fp_enter
extern char fpe_type[];
#endif
/* kernel function prototypes required */
......@@ -72,24 +74,45 @@ extern void nwfpe_enter(void);
/* Address of user registers on the kernel stack. */
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");
else {
/* Display title, version and copyright information. */
printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 "
"(c) 1998-1999 Rebel.com\n");
/* Save pointer to the old FP handler and then patch ourselves in */
orig_fp_enter = kern_fp_enter;
kern_fp_enter = nwfpe_enter;
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. */
printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 "
"(c) 1998-1999 Rebel.com\n");
/* Save pointer to the old FP handler and then patch ourselves in */
orig_fp_enter = kern_fp_enter;
kern_fp_enter = nwfpe_enter;
return 0;
}
void __exit fpe_exit(void)
static void __exit fpe_exit(void)
{
/* Restore the values we saved earlier. */
kern_fp_enter = orig_fp_enter;
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
NetWinder Floating Point Emulator
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -26,7 +26,7 @@
#include "fpmodule.h"
#include "fpmodule.inl"
static floatx80 floatx80Constant[] = {
const floatx80 floatx80Constant[] = {
{ 0x0000, 0x0000000000000000ULL}, /* extended 0.0 */
{ 0x3fff, 0x8000000000000000ULL}, /* extended 1.0 */
{ 0x4000, 0x8000000000000000ULL}, /* extended 2.0 */
......@@ -37,7 +37,7 @@ static floatx80 floatx80Constant[] = {
{ 0x4002, 0xa000000000000000ULL} /* extended 10.0 */
};
static float64 float64Constant[] = {
const float64 float64Constant[] = {
0x0000000000000000ULL, /* double 0.0 */
0x3ff0000000000000ULL, /* double 1.0 */
0x4000000000000000ULL, /* double 2.0 */
......@@ -48,7 +48,7 @@ static float64 float64Constant[] = {
0x4024000000000000ULL /* double 10.0 */
};
static float32 float32Constant[] = {
const float32 float32Constant[] = {
0x00000000, /* single 0.0 */
0x3f800000, /* single 1.0 */
0x40000000, /* single 2.0 */
......@@ -59,21 +59,6 @@ static float32 float32Constant[] = {
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 nRc;
......@@ -135,10 +120,10 @@ unsigned int getDestinationSize(const unsigned int opcode)
return(nRc);
}
/* contition code lookup table
/* condition code lookup table
index into the table is test code: EQ, NE, ... LT, GT, AL, NV
bit position in short is condition code: NZCV */
unsigned short aCC[16] = {
static const unsigned short aCC[16] = {
0xF0F0, // EQ == Z set
0x0F0F, // NE
0xCCCC, // CS == C set
......
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -366,11 +366,25 @@ TABLE 5
/* Get the rounding mode from the opcode. */
#define getRoundingMode(opcode) ((opcode & MASK_ROUNDING_MODE) >> 5)
float32 getSingleConstant(const unsigned int nIndex);
float64 getDoubleConstant(const unsigned int nIndex);
floatx80 getExtendedConstant(const unsigned int nIndex);
unsigned int getRegisterCount(const unsigned int opcode);
unsigned int getDestinationSize(const unsigned int opcode);
static inline const floatx80 getExtendedConstant(const unsigned int nIndex)
{
extern const floatx80 floatx80Constant[];
return floatx80Constant[nIndex];
}
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
/*
NetWinder Floating Point Emulator
(c) Rebel.com, 1998-1999
(c) Rebel.COM, 1998,1999
Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
......@@ -23,8 +23,6 @@
#include "fpopcode.h"
#include "fpa11.h"
float32 getSingleConstant(unsigned int);
float32 float32_exp(float32 Fm);
float32 float32_ln(float32 Fm);
float32 float32_sin(float32 rFm);
......
......@@ -14,14 +14,8 @@
#include <asm/pgtable.h>
#include <asm/uaccess.h>
/*
* Make sure that the compiler and target are compatible
*/
#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.
#ifndef __APCS_32__
#error APCS-32 required
#endif
#define OFF_TSK(n) (unsigned long)&(((struct task_struct *)0)->n)
......
# 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!
# To add an entry into this database, please see Documentation/arm/README,
# 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
#
......@@ -35,7 +37,7 @@ p720t ARCH_P720T P720T 24
assabet SA1100_ASSABET ASSABET 25
victor SA1100_VICTOR VICTOR 26
lart SA1100_LART LART 27
ranger ARCH_RANGER RANGER 28
ranger SA1100_RANGER RANGER 28
graphicsclient SA1100_GRAPHICSCLIENT GRAPHICSCLIENT 29
xp860 SA1100_XP860 XP860 30
cerf SA1100_CERF CERF 31
......@@ -48,7 +50,7 @@ accelent_l7200 ARCH_L7200_ACCELENT ACCELENT_L7200 37
netport SA1100_NETPORT NETPORT 38
pangolin SA1100_PANGOLIN PANGOLIN 39
yopy SA1100_YOPY YOPY 40
coolidge SA1100_COOLIDGE coolidge 41
coolidge SA1100_COOLIDGE COOLIDGE 41
huw_webpanel SA1100_HUW_WEBPANEL HUW_WEBPANEL 42
spotme ARCH_SPOTME SPOTME 43
freebird ARCH_FREEBIRD FREEBIRD 44
......@@ -65,6 +67,16 @@ flexanet ARCH_FLEXANET FLEXANET 54
webpal ARCH_WEBPAL WEBPAL 55
linpda SA1100_LINPDA LINPDA 56
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
empeg SA1100_EMPEG EMPEG
......@@ -81,14 +81,9 @@ start_sys_seg: .word SYSSEG
type_of_loader: .byte 0 # = 0, old one (LILO, Loadlin,
# Bootlin, SYSLX, bootsect...)
# Else it is set by the loader:
# 0xTV: T=0 for LILO
# T=1 for Loadlin
# T=2 for bootsect-loader
# T=3 for SYSLX
# T=4 for ETHERBOOT
# V = version
# See Documentation/i386/boot.txt for
# assigned ids
# flags, unused bits must be zero (RFU) bit within loadflags
loadflags:
LOADED_HIGH = 1 # If set, the kernel is loaded high
......
......@@ -47,11 +47,13 @@ choice 'Processor family' \
if [ "$CONFIG_M386" = "y" ]; then
define_bool CONFIG_X86_CMPXCHG n
define_bool CONFIG_X86_XADD n
define_int CONFIG_X86_L1_CACHE_SHIFT 4
else
define_bool CONFIG_X86_WP_WORKS_OK y
define_bool CONFIG_X86_INVLPG y
define_bool CONFIG_X86_CMPXCHG y
define_bool CONFIG_X86_XADD y
define_bool CONFIG_X86_BSWAP y
define_bool CONFIG_X86_POPAD_OK y
fi
......
......@@ -45,6 +45,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
printk(" at %08x%08x",
high, low);
}
printk("\n");
/* Clear it */
wrmsr(0x401+i*4, 0UL, 0UL);
/* Serialize */
......
......@@ -100,6 +100,7 @@ EXPORT_SYMBOL_NOVERS(__put_user_4);
EXPORT_SYMBOL(strtok);
EXPORT_SYMBOL(strpbrk);
EXPORT_SYMBOL(simple_strtol);
EXPORT_SYMBOL(strstr);
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)
goto out_unlock;
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
* their LDTs?
......
......@@ -231,6 +231,20 @@
v1.37
20001109 H. Peter Anvin <hpa@zytor.com>
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/errno.h>
......@@ -250,6 +264,7 @@
#include <linux/devfs_fs_kernel.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/pci.h>
#define MTRR_NEED_STRINGS
#include <asm/mtrr.h>
#include <linux/init.h>
......@@ -269,7 +284,7 @@
#include <asm/hardirq.h>
#include <linux/irq.h>
#define MTRR_VERSION "1.37 (20001109)"
#define MTRR_VERSION "1.40 (20010327)"
#define TRUE 1
#define FALSE 0
......@@ -464,6 +479,27 @@ static unsigned int get_num_var_ranges (void)
static int have_wrcomb (void)
{
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 )
{
......@@ -1777,7 +1813,8 @@ static void compute_ascii (void)
}
devfs_set_file_size (devfs_handle, ascii_buf_bytes);
# ifdef CONFIG_PROC_FS
proc_root_mtrr->size = ascii_buf_bytes;
if (proc_root_mtrr)
proc_root_mtrr->size = ascii_buf_bytes;
# endif /* CONFIG_PROC_FS */
} /* End Function compute_ascii */
......@@ -1938,6 +1975,7 @@ static int __init mtrr_setup(void)
get_mtrr = intel_get_mtrr;
set_mtrr_up = intel_set_mtrr_up;
switch (boot_cpu_data.x86_vendor) {
case X86_VENDOR_AMD:
/* The original Athlon docs said that
total addressable memory is 44 bits wide.
......@@ -1956,12 +1994,27 @@ static int __init mtrr_setup(void)
size_and_mask = ~size_or_mask & 0xfff00000;
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:
/* Intel, etc. */
size_or_mask = 0xff000000; /* 36 bits */
size_and_mask = 0x00f00000;
break;
}
} else if ( test_bit(X86_FEATURE_K6_MTRR, &boot_cpu_data.x86_capability) ) {
/* Pre-Athlon (K6) AMD CPU MTRRs */
mtrr_if = MTRR_IF_AMD_K6;
......@@ -2072,8 +2125,10 @@ int __init mtrr_init(void)
#ifdef CONFIG_PROC_FS
proc_root_mtrr = create_proc_entry ("mtrr", S_IWUSR | S_IRUGO, &proc_root);
proc_root_mtrr->owner = THIS_MODULE;
proc_root_mtrr->proc_fops = &mtrr_fops;
if (proc_root_mtrr) {
proc_root_mtrr->owner = THIS_MODULE;
proc_root_mtrr->proc_fops = &mtrr_fops;
}
#endif
#ifdef CONFIG_DEVFS_FS
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/string.h>
#include <linux/sched.h>
......@@ -5,6 +6,7 @@
#include <asm/i387.h>
#include <asm/hardirq.h>
/*
* MMX 3DNow! library helper functions
*
......@@ -95,6 +97,13 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
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)
{
int i;
......@@ -195,6 +204,118 @@ static void fast_copy_page(void *to, void *from)
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.
*/
......
......@@ -26,11 +26,15 @@ CFLAGS := $(CFLAGS) $(CFLAGS_PIPE) $(CFLAGS_NSR)
HEAD := arch/s390/kernel/head.o arch/s390/kernel/init_task.o
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) \
drivers/s390/io.o
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
listing: vmlinux
......
......@@ -25,7 +25,7 @@ include $(TOPDIR)/Rules.make
image: $(CONFIGURE) $(TOPDIR)/vmlinux \
iplfba.boot ipleckd.boot ipldump.boot
$(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
$(OBJDUMP) --disassemble --disassemble-all --disassemble-zeroes --reloc $(TOPDIR)/vmlinux > listing
......
......@@ -28,7 +28,7 @@ endmenu
mainmenu_option next_comment
comment 'Processor type and features'
bool 'Symmetric multi-processing support' CONFIG_SMP
bool 'IEEE FPU emulation' CONFIG_IEEEFPU_EMULATION
bool 'IEEE FPU emulation' CONFIG_MATHEMU
endmenu
mainmenu_option next_comment
......@@ -44,7 +44,7 @@ bool 'Networking support' CONFIG_NET
bool 'System V IPC' CONFIG_SYSVIPC
bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
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 MISC binaries' CONFIG_BINFMT_MISC
bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG
......@@ -65,6 +65,6 @@ comment 'Kernel hacking'
if [ "$CONFIG_CTC" = "y" ]; then
bool 'Remote GDB kernel debugging' CONFIG_REMOTE_DEBUG
fi
# this does not work. bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
endmenu
#
# Automatically generated by make menuconfig: don't edit
# Automatically generated make config: don't edit
#
# CONFIG_ISA is not set
# CONFIG_EISA is not set
......@@ -12,12 +12,6 @@ CONFIG_ARCH_S390=y
#
CONFIG_EXPERIMENTAL=y
#
# Processor type and features
#
CONFIG_SMP=y
CONFIG_IEEEFPU_EMULATION=y
#
# Loadable module support
#
......@@ -25,6 +19,12 @@ CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y
#
# Processor type and features
#
CONFIG_SMP=y
CONFIG_MATHEMU=y
#
# General setup
#
......@@ -36,6 +36,7 @@ CONFIG_NET=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PROCESS_DEBUG is not set
......@@ -49,9 +50,14 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=24576
CONFIG_BLK_DEV_INITRD=y
CONFIG_BLK_DEV_XPRAM=m
#
# S/390 block device drivers
#
CONFIG_DASD=y
CONFIG_DASD_ECKD=y
CONFIG_DASD_FBA=y
# CONFIG_DASD_DIAG is not set
#
# Multi-device support (RAID and LVM)
......@@ -63,20 +69,31 @@ CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID5=m
CONFIG_BLK_DEV_LVM=m
CONFIG_LVM_PROC_FS=y
#
# Character device drivers
#
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# S/390 character device drivers
#
CONFIG_3215=y
CONFIG_3215_CONSOLE=y
CONFIG_HWC=y
CONFIG_HWC_CONSOLE=y
CONFIG_S390_TAPE=m
#
# S/390 tape interface support
#
CONFIG_S390_TAPE_CHAR=y
CONFIG_S390_TAPE_BLOCK=y
#
# S/390 tape hardware support
#
CONFIG_S390_TAPE_3490=y
CONFIG_S390_TAPE_3480=y
......@@ -88,6 +105,10 @@ CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_TR=y
# CONFIG_FDDI is not set
#
# S/390 network device drivers
#
# CONFIG_CHANDEV is not set
CONFIG_CTC=m
CONFIG_IUCV=m
......@@ -109,11 +130,16 @@ CONFIG_IP_MULTICAST=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
#
#
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set
......@@ -138,6 +164,8 @@ CONFIG_IP_MULTICAST=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_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_RW is not set
# CONFIG_AFFS_FS is not set
......@@ -192,8 +220,6 @@ CONFIG_LOCKD=y
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS 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_EXTRAS is not set
......@@ -211,8 +237,10 @@ CONFIG_IBM_PARTITION=y
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Kernel hacking
#
# CONFIG_MAGIC_SYSRQ is not set
......@@ -14,14 +14,13 @@ all: kernel.o head.o init_task.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 \
setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
semaphore.o s390fpu.o reipl.o s390_ext.o debug.o
obj-$(CONFIG_MODULES) += s390_ksyms.o
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_IEEEFPU_EMULATION) += mathemu.o floatlib.o
#
# Kernel debugging
......
......@@ -10,6 +10,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <asm/ebcdic.h>
#include <asm/cpcmd.h>
void cpcmd(char *cmd, char *response, int rlen)
{
......
This diff is collapsed.
......@@ -9,6 +9,7 @@
* Martin Peschke <peschke@fh-brandenburg.de>
*/
#include <linux/module.h>
#include <asm/types.h>
/*
......@@ -389,3 +390,11 @@ __u8 _ebc_toupper[256] =
0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
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 @@
* S/390 I/O interrupt processing and I/O request processing is
* implemented in arch/s390/kernel/s390io.c
*/
#include <linux/module.h>
#include <linux/config.h>
#include <linux/ptrace.h>
#include <linux/errno.h>
......@@ -20,7 +21,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
#include <linux/slab.h>
#include <linux/malloc.h>
#include <linux/string.h>
#include <linux/random.h>
#include <linux/smp.h>
......@@ -286,7 +287,7 @@ static inline void get_irqlock(int cpu)
*/
void __global_cli(void)
{
unsigned int flags;
unsigned long flags;
__save_flags(flags);
if (flags & (1 << EFLAGS_I_SHIFT)) {
......@@ -357,48 +358,6 @@ void __global_restore_flags(unsigned long flags)
#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)
{
......@@ -427,3 +386,8 @@ void init_irq_proc(void)
/* 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.
This diff is collapsed.
......@@ -180,9 +180,9 @@ int copy_user(struct task_struct *task,saddr_t useraddr,addr_t copyaddr,int len,
copymax=(PT_FPR15_LO+4);
realuseraddr=(addr_t)&(((u8 *)&task->thread.fp_regs)[useraddr-PT_FPC]);
}
else if(useraddr<sizeof(user_regs_struct))
else if(useraddr<sizeof(struct user_regs_struct))
{
copymax=sizeof(user_regs_struct);
copymax=sizeof(struct user_regs_struct);
realuseraddr=(addr_t)&(((u8 *)&task->thread.per_info)[useraddr-PT_CR_9]);
}
else
......
This diff is collapsed.
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
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
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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