Commit 7d32756b authored by Linus Torvalds's avatar Linus Torvalds

Import 2.1.116pre1

parent 180eb7b9
......@@ -706,8 +706,8 @@ N: Richard Henderson
E: rth@cygnus.com
E: richard@gnu.org
D: Alpha/ELF, gcc, binutils, and glibc
S: 5450 Mayme #25
S: San Jose, California 95129
S: 50 E. Middlefield #10
S: Mountain View, California 94043-3822
S: USA
N: Sebastian Hetze
......
......@@ -26,7 +26,7 @@ structures following the array have been overwritten. Using this
discipline, these cases get detected quickly and safely.
Theodore Ts'o
31-Mar-94
31 Mar 94
The magic table is current to Linux 2.1.55.
......@@ -34,42 +34,65 @@ The magic table is current to Linux 2.1.55.
<mailto:mec@shout.net>
22 Sep 1997
Now it should be up to date with Linux 2.1.112. Because
we are in feature freeze time it is very unlikely that
something will change before 2.2.x. The entries are
sorted by number field.
Krzysztof G. Baranowski
<mailto: kgb@knm.org.pl>
29 Jul 1998
Magic Name Number Structure File
Magic Name Number Structure File
===========================================================================
PG_MAGIC 'P' pg_{read,write}_hdr include/linux/pg.h
MKISS_DRIVER_MAGIC 0x04bf mkiss_channel drivers/net/mkiss.h
RISCOM8_MAGIC 0x0907 riscom_port drivers/char/riscom8.h
APM_BIOS_MAGIC 0x4101 apm_bios_struct include/linux/apm_bios.h
CYCLADES_MAGIC 0x4359 cyclades_port include/linux/cyclades.h
FASYNC_MAGIC 0x4601 fasync_struct include/linux/fs.h
PTY_MAGIC 0x5001 (none at the moment)
drivers/char/pty.c
PPP_MAGIC 0x5002 ppp include/linux/if_ppp.h
SERIAL_MAGIC 0x5301 async_struct include/linux/serial.h
SSTATE_MAGIC 0x5302 serial_state include/linux/serial.h
SLIP_MAGIC 0x5302 slip drivers/net/slip.h
STRIP_MAGIC 0x5303 strip drivers/net/strip.c
X25_ASY_MAGIC 0x5303 x25_asy drivers/net/x25_asy.h
SIXPACK_MAGIC 0x5304 sixpack drivers/net/hamradio/6pack.h
AX25_MAGIC 0x5316 ax_disp drivers/net/mkiss.h
ESP_MAGIC 0x53ee esp_struct drivers/char/esp.h
TTY_MAGIC 0x5401 tty_struct include/linux/tty.h
TTY_DRIVER_MAGIC 0x5402 tty_driver include/linux/tty_driver.h
TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h
SCC_MAGIC 0x8530 scc_channel include/linux/scc.h
SPECIALIX_MAGIC 0x0907 specialix_port drivers/char/specialix_io8.h
CG_MAGIC 0x090255 ufs_cylinder_group include/linux/ufs_fs.h
RPORT_MAGIC 0x525001 r_port drivers/char/rocket_int.h
SLAB_C_MAGIC 0x4f17a36d kmem_cache_s mm/slab.c
GDTIOCTL_MAGIC 0x06030f07 gdth_iowr_str drivers/scsi/gdth_ioctl.h
NBD_REQUEST_MAGIC 0x12560953 nbd_request include/linux/nbd.h
SLAB_RED_MAGIC2 0x170fc2a5 (any) mm/slab.c
BAYCOM_MAGIC 0x19730510 baycom_state drivers/net/baycom_epp.c
ISDN_X25IFACE_MAGIC 0x1e75a2b9 isdn_x25iface_proto_data
drivers/isdn/isdn_x25iface.h
ECP_MAGIC 0x21504345 cdkecpsig include/linux/cdk.h
LSMAGIC 0x2a3b4d2a ls drivers/fc4/fc.c
LSOMAGIC 0x2a3c4e3c lso drivers/fc4/fc.c
WANPIPE_MAGIC 0x414C4453 sdla_{dump,exec} include/linux/wanpipe.h
CODA_CNODE_MAGIC 0x47114711 coda_inode_info include/linux/coda_fs_i.h
ISDN_ASYNC_MAGIC 0x49344C01 modem_info include/linux/isdn.h
ISDN_NET_MAGIC 0x49344C02 isdn_net_local_s include/linux/isdn.h
STLI_BOARDMAGIC 0x4bc6c825 stlibrd include/linux/istallion.h
SLAB_C_MAGIC 0x4f17a36d kmem_cache_s mm/slab.c
ROUTER_MAGIC 0x524d4157 wan_device include/linux/wanrouter.h
SLAB_RED_MAGIC1 0x5a2cf071 (any) mm/slab.c
STL_PORTMAGIC 0x5a7182c9 stlport include/linux/stallion.h
HDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state include/linux/hdlcdrv.h
EPCA_MAGIC 0x5c6df104 channel include/linux/epca.h
EPCA_MAGIC 0x5c6df104 channel include/linux/epca.h
PCXX_MAGIC 0x5c6df104 channel drivers/char/pcxx.h
LO_MAGIC 0x68797548 nbd_device include/linux/nbd.h
STL_PANELMAGIC 0x7ef621a1 stlpanel include/linux/stallion.h
NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h
STL_BOARDMAGIC 0xa2267f52 stlbrd include/linux/stallion.h
SLAB_MAGIC_ALLOC 0xa5c32f2b kmem_slab_s mm/slab.c
SLAB_MAGIC_DESTROYED 0xb2f23c5a kmem_slab_s mm/slab.c
......
NOTES ON RADIOTRACK CARD CONTROL
by Stephen M. Benoit (benoits@servicepro.com) Dec 14, 1996
----------------------------------------------------------------------------
Document version 1.0
ACKNOWLEDGMENTS
----------------
This document was made based on 'C' code for Linux from Gideon le Grange
(legrang@active.co.za or legrang@cs.sun.ac.za) in 1994, and elaborations from
Frans Brinkman (brinkman@esd.nl) in 1996. The results reported here are from
experiments that the author performed on his own setup, so your mileage may
vary... I make no guarantees, claims or warrantees to the suitability or
validity of this information. No other documentation on the AIMS
Lab (http://www.aimslab.com/) RadioTrack card was made available to the
author. This document is offered in the hopes that it might help users who
want to use the RadioTrack card in an environment other than MS Windows.
WHY THIS DOCUMENT?
------------------
I have a RadioTrack card from back when I ran an MS-Windows platform. After
converting to Linux, I found Gideon le Grange's command-line software for
running the card, and found that it was good! Frans Brinkman made a
comfortable X-windows interface, and added a scanning feature. For hack
value, I wanted to see if the tuner could be tuned beyond the usual FM radio
broadcast band, so I could pick up the audio carriers from North American
broadcast TV channels, situated just below and above the 87.0-109.0 MHz range.
I did not get much success, but I learned about programming ioports under
Linux and gained some insights about the hardware design used for the card.
So, without further delay, here are the details.
PHYSICAL DESCRIPTION
--------------------
The RadioTrack card is an ISA 8-bit FM radio card. The radio frequency (RF)
input is simply an antenna lead, and the output is a power audio signal
available through a miniature phono plug. Its RF frequencies of operation are
more or less limited from 87.0 to 109.0 MHz (the commercial FM broadcast
band). Although the registers can be programmed to request frequencies beyond
these limits, experiments did not give promising results. The variable
frequency oscillator (VFO) that demodulates the intermediate frequency (IF)
signal probably has a small range of useful frequencies, and wraps around or
gets clipped beyond the limits mentioned above.
CONTROLLING THE CARD WITH IOPORT
--------------------------------
The RadioTrack (base) ioport is configurable for 0x30c or 0x20c. Only one
ioport seems to be involved. The ioport decoding circuitry must be pretty
simple, as individual ioport bits are directly matched to specific functions
(or blocks) of the radio card. This way, many functions can be changed in
parallel with one write to the ioport. The only feedback available through
the ioports appears to be the "Stereo Detect" bit.
The bits of the ioport are arranged as follows:
MSb LSb
+------+------+------+--------+--------+-------+---------+--------+
| VolA | VolB | ???? | Stereo | Radio | TuneA | TuneB | Tune |
| (+) | (-) | | Detect | Audio | (bit) | (latch) | Update |
| | | | Enable | Enable | | | Enable |
+------+------+------+--------+--------+-------+---------+--------+
VolA . VolB [AB......]
-----------
0 0 : audio mute
0 1 : volume + (some delay required)
1 0 : volume - (some delay required)
1 1 : stay at present volume
Stereo Detect Enable [...S....]
--------------------
0 : No Detect
1 : Detect
Results available by reading ioport >60 msec after last port write.
0xff ==> no stereo detected, 0xfd ==> stereo detected.
Radio to Audio (path) Enable [....R...]
----------------------------
0 : Disable path (silence)
1 : Enable path (audio produced)
TuneA . TuneB [.....AB.]
-------------
0 0 : "zero" bit phase 1
0 1 : "zero" bit phase 2
1 0 : "one" bit phase 1
1 1 : "one" bit phase 2
24-bit code, where bits = (freq*40) + 10486188.
The Most Significant 11 bits must be 1010 xxxx 0x0 to be valid.
The bits are shifted in LSb first.
Tune Update Enable [.......T]
------------------
0 : Tuner held constant
1 : Tuner updating in progress
PROGRAMMING EXAMPLES
--------------------
Default: BASE <-- 0xc8 (current volume, no stereo detect,
radio enable, tuner adjust disable)
Card Off: BASE <-- 0x00 (audio mute, no stereo detect,
radio disable, tuner adjust disable)
Card On: BASE <-- 0x00 (see "Card Off", clears any unfinished business)
BASE <-- 0xc8 (see "Default")
Volume Down: BASE <-- 0x48 (volume down, no stereo detect,
radio enable, tuner adjust disable)
* wait 10 msec *
BASE <-- 0xc8 (see "Default")
Volume Up: BASE <-- 0x88 (volume up, no stereo detect,
radio enable, tuner adjust disable)
* wait 10 msec *
BASE <-- 0xc8 (see "Default")
Check Stereo: BASE <-- 0xd8 (current volume, stereo detect,
radio enable, tuner adjust disable)
* wait 100 msec *
x <-- BASE (read ioport)
BASE <-- 0xc8 (see "Default")
x=0xff ==> "not stereo", x=0xfd ==> "stereo detected"
Set Frequency: code = (freq*40) + 10486188
foreach of the 24 bits in code,
(from Least to Most Significant):
to write a "zero" bit,
BASE <-- 0x01 (audio mute, no stereo detect, radio
disable, "zero" bit phase 1, tuner adjust)
BASE <-- 0x03 (audio mute, no stereo detect, radio
disable, "zero" bit phase 2, tuner adjust)
to write a "one" bit,
BASE <-- 0x05 (audio mute, no stereo detect, radio
disable, "one" bit phase 1, tuner adjust)
BASE <-- 0x07 (audio mute, no stereo detect, radio
disable, "one" bit phase 2, tuner adjust)
----------------------------------------------------------------------------
1998-08-06 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.7.2
* After A/D calibration, do an explicit set to the line input,
rather than using set_recsrc
1998-07-20 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.7.1
* Add more OSS ioctls
1998-07-19 Andrew Veliath <andrewtv@usa.net>
* Update doc file
* Bring back DIGITAL1 with digital parameter to msnd_pinnacle.c
and CONFIG_MSNDPIN_DIGITAL. I'm not sure this actually works,
since I find audio playback goes into a very speeded mode of
operation, however it might be due to a lack of a digital
source, which I don't have to test.
1998-07-18 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.7.0
* Can now compile with Alan Cox' 2.0.34-modular-sound patch (so
now it requires >= 2.1.106 or 2.0.34-ms) (note for 2.0.34-ms it
is in the Experimental section)
* More modularization, consolidation, also some MIDI hooks
installed for future MIDI modules
* Write flush
* Change default speed, channels, bit size to OSS/Free defaults
1998-06-02 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.5b
* Fix version detection
* Remove underflow and overflow resets (delay was too long)
* Replace spinlocked bitops with atomic bit ops
1998-05-27 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.5a
* Better recovery from underflow or overflow conditions
* Fix a deadlock condition with one thread reading and the other
writing
1998-05-26 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.5
* Separate reset queue functions for play and record
* Add delays in dsp_halt
1998-05-24 Andrew Veliath <andrewtv@usa.net>
* Add a check for Linux >= 2.1.95
* Remove DIGITAL1 input until I figure out how to make it work
* Add HAVE_DSPCODEH which when not defined will load firmware from
files using mod_firmware_load, then release memory after they
are uploaded (requires reorganized OSS).
1998-05-22 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.4c
* Hopefully fix the mixer volume problem
1998-05-19 Andrew Veliath <andrewtv@usa.net>
* Add __initfuncs and __initdatas to reduce resident code size
* Move bunch of code around, remove some protos
* Integrate preliminary changes for Alan Cox's OSS reorganization
for non-OSS drivers to coexist with OSS devices on the same
major. To compile standalone, must now define STANDALONE.
1998-05-16 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.4b
* Integrated older card support into a unified driver, tested on a
MultiSound Classic c/o Kendrick Vargas.
1998-05-15 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.4
* Fix read/write return values
1998-05-13 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.3
* Stop play gracefully
* Add busy flag
* Add major and calibrate_signal module parameters
* Add ADC calibration
* Add some OSS compatibility ioctls
* Add mixer record selection
* Add O_NONBLOCK support, separate read/write wait queues
* Add sample bit size ioctl, expanded sample rate ioctl
* Playback suspension now resumes
* Use signal_pending after interruptible_sleep_on
* Add recording, change ints to bit flags
1998-05-11 Andrew Veliath <andrewtv@usa.net>
* Update version to 0.2
* Add preliminary playback support
* Use new Turtle Beach DSP code
\ No newline at end of file
......@@ -9,8 +9,8 @@ Supported Features
~~~~~~~~~~~~~~~~~~
Currently digital audio and mixer functionality is supported. (memory
mapped digital audio is not yet supported). MultiSound support is
fully modularized, and can only be used as modules:
mapped digital audio is not yet supported). Modular MultiSound
support is composed of the following modules:
msnd - MultiSound base (requires soundcore)
msnd_classic - Base audio/mixer support for Classic, Monetery and
......@@ -80,14 +80,28 @@ mem Shared memory area, e.g. mem=0xd8000
msnd_classic, msnd_pinnacle Additional Options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fifosize The digital audio FIFOs, in kilobytes. The default is
64kB (two FIFOs are allocated, so this uses up 128kB).
fifosize The digital audio FIFOs, in kilobytes. The
default is 64kB (two FIFOs are allocated, so
this uses up 128kB).
calibrate_signal Setting this to one calibrates the ADCs to the
signal, zero calibrates to the card (defaults
to zero).
msnd_pinnacle Additional Options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
digital Specify digital=1 to enable the S/PDIF input
if you have the digital daughterboard
adapter. This will enable access to the
DIGITAL1 input for the soundcard in the mixer.
Some mixer programs might have trouble setting
the DIGITAL1 source as an input. If you have
trouble, you can try the setdigital.c program
at the bottom of this document.
Obtaining and Creating Firmware Files
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -105,7 +119,9 @@ following firmware files to /etc/sound (note the file renaming):
cp DSPCODE/MSNDPERM.REB /etc/sound/msndperm.bin
When configuring the Linux kernel, specify /etc/sound/msndinit.bin and
/etc/sound/msndperm.bin for the two firmware files.
/etc/sound/msndperm.bin for the two firmware files (Linux kernel
versions older than 2.2 do not ask for firmware paths, and are
hardcoded to /etc/sound).
For the Pinnacle/Fiji
......@@ -122,9 +138,9 @@ and end lines):
-- conv.l start --
%%
[ \n\t,\r] ;
\;.* ;
DB ;
[ \n\t,\r]
\;.*
DB
[0-9A-Fa-f]+H { int n; sscanf(yytext, "%xH", &n); printf("%c", n); }
-- conv.l end --
......@@ -143,4 +159,76 @@ archive unpacked into a directory named PINNDDK):
The conv (and conv.l) program is not needed after conversion and can
be safely deleted. Then, when configuring the Linux kernel, specify
/etc/sound/pndspini.bin and /etc/sound/pndsperm.bin for the two
firmware files.
firmware files (Linux kernel versions older than 2.2 do not ask for
firmware paths, and are hardcoded to /etc/sound).
Recording from the S/PDIF Input
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you have a Pinnacle or Fiji with S/PDIF input and want to set it as
the input source, you can use this program if you have trouble trying
to do it with a mixer program (be sure to insert the module with the
digital=1 option).
Compile with:
cc -O setdigital.c -o setdigital
-- start setdigital.c --
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/soundcard.h>
int main(int argc, char *argv[])
{
int fd;
unsigned long recmask, recsrc;
if (argc != 2) {
fprintf(stderr, "usage: setdigital <mixer device>\n");
exit(1);
} else
if ((fd = open(argv[1], O_RDWR)) < 0) {
perror(argv[1]);
exit(1);
}
if (ioctl(fd, SOUND_MIXER_READ_RECMASK, &recmask) < 0) {
fprintf(stderr, "error: ioctl read recmask failed\n");
perror("ioctl");
close(fd);
exit(1);
}
if (!(recmask & SOUND_MASK_DIGITAL1)) {
fprintf(stderr, "error: cannot find DIGITAL1 device in mixer\n");
close(fd);
exit(1);
}
if (ioctl(fd, SOUND_MIXER_READ_RECSRC, &recsrc) < 0) {
fprintf(stderr, "error: ioctl read recsrc failed\n");
perror("ioctl");
close(fd);
exit(1);
}
recsrc |= SOUND_MASK_DIGITAL1;
if (ioctl(fd, SOUND_MIXER_WRITE_RECSRC, &recsrc) < 0) {
fprintf(stderr, "error: ioctl write recsrc failed\n");
perror("ioctl");
close(fd);
exit(1);
}
close(fd);
return 0;
}
-- end setdigital.c --
OPL3-SA sound driver (opl3sa.o)
OPL3-SA1 sound driver (opl3sa.o)
The Yamaha OPL3-SAx sound chip is usually found built into motherboards, and
---
Note: This howto only describes how to setup the OPL3-SA1 chip; this info
does not apply to the SA2, SA3, or SA4. Contact hannu@opensound.com for
the support details of these other SAx chips.
---
The Yamaha OPL3-SA1 sound chip is usually found built into motherboards, and
it's a decent little chip offering a WSS mode, a SB Pro emulation mode, MPU401
and OPL3 FM Synth capabilities.
......@@ -73,4 +79,3 @@ A 'cat /dev/sndstat' with all the above options should look similar to this:
Questions? Comments?
<stiker@northlink.com>
This diff is collapsed.
......@@ -330,9 +330,9 @@ S: Maintained
JOYSTICK DRIVER
P: Vojtech Pavlik
M: vojtech@atrey.karlin.mff.cuni.cz
W: http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/
M: vojtech@ucw.cz
L: linux-joystick@atrey.karlin.mff.cuni.cz
W: http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/
S: Maintained
KERNEL AUTOMOUNTER (AUTOFS)
......
VERSION = 2
PATCHLEVEL = 1
SUBLEVEL = 115
SUBLEVEL = 116
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
......
......@@ -10,35 +10,42 @@
NM := nm -B
ifdef CONFIG_CROSSCOMPILE
# enable this for linking under OSF/1:
LINKFLAGS = -non_shared -T 0xfffffc0000310000 -N
else
elf=$(shell if $(LD) --help | grep elf64alpha >/dev/null; then echo yes; fi)
ifeq ($(elf),yes)
LINKFLAGS = -static -T arch/alpha/vmlinux.lds
else
LINKFLAGS = -static -T arch/alpha/vmlinux.lds -N
endif
# GNU gcc/cc1/as can use pipes instead of temporary files
CFLAGS := $(CFLAGS) -pipe
endif
LINKFLAGS = -static -T arch/alpha/vmlinux.lds -N
CFLAGS := $(CFLAGS) -pipe -mno-fp-regs -ffixed-8
CFLAGS := $(CFLAGS) -mno-fp-regs -ffixed-8
# Determine if we can use the BWX instructions with GAS.
old_gas := $(shell if $(AS) --version 2>&1 | grep 'version 2.7' > /dev/null; then echo y; else echo n; fi)
# determine if we can use the BWX instructions with GAS
OLD_GAS := $(shell if $(AS) --version 2>&1 | grep 'version 2.7' > /dev/null; then echo y; else echo n; fi)
# Determine if GCC understands the -mcpu= option.
have_mcpu := $(shell if $(CC) -mcpu=ev5 -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo y; else echo n; fi)
# If PYXIS, then enable use of BWIO space
ifneq ($(OLD_GAS),y)
ifeq ($(CONFIG_ALPHA_PYXIS),y)
CFLAGS := $(CFLAGS) -Wa,-m21164a -DBWX_USABLE -DBWIO_ENABLED
endif
# If GENERIC, make sure to turn off any instruction set extensions that
# the host compiler might have on by default. Given that EV4 and EV5
# have the same instruction set, prefer EV5 because an EV5 schedule is
# more likely to keep an EV4 processor busy than vice-versa.
ifeq ($(CONFIG_ALPHA_GENERIC)$(have_mcpu),yy)
CFLAGS := $(CFLAGS) -mcpu=ev5
endif
# If EV6, turn on the proper optimizations.
ifeq ($(CONFIG_ALPHA_EV6),y)
CFLAGS := -mcpu=ev6 $(CFLAGS)
ifeq ($(CONFIG_ALPHA_EV6)$(have_mcpu),yy)
CFLAGS := $(CFLAGS) -mcpu=ev6
endif
# For TSUNAMI, we must have the assembler not emulate our instructions.
# BWX is most important, but we don't really want any emulation ever.
ifeq ($(old_gas),y)
ifneq ($(CONFIG_ALPHA_GENERIC)$(CONFIG_ALPHA_TSUNAMI),)
# How do we do #error in make?
CFLAGS := --error-please-upgrade-your-assembler
endif
else
ifeq ($(CONFIG_ALPHA_GENERIC),y)
CFLAGS := $(CFLAGS) -Wa,-mev6
endif
ifeq ($(CONFIG_ALPHA_PYXIS),y)
CFLAGS := $(CFLAGS) -Wa,-m21164a -DBWIO_ENABLED
endif
endif
HEAD := arch/alpha/kernel/head.o
......@@ -59,7 +66,7 @@ rawboot:
@$(MAKEBOOT) rawboot
#
# my boot writes directly to a specific disk partition, I doubt most
# My boot writes directly to a specific disk partition, I doubt most
# people will want to do that without changes..
#
msb my-special-boot:
......
......@@ -31,30 +31,30 @@ else
fi
choice 'Alpha system type' \
"Avanti CONFIG_ALPHA_AVANTI \
Alpha-XL CONFIG_ALPHA_XL \
Alpha-XLT CONFIG_ALPHA_XLT \
Cabriolet CONFIG_ALPHA_CABRIOLET \
EB66 CONFIG_ALPHA_EB66 \
EB66+ CONFIG_ALPHA_EB66P \
EB64+ CONFIG_ALPHA_EB64P \
EB164 CONFIG_ALPHA_EB164 \
PC164 CONFIG_ALPHA_PC164 \
LX164 CONFIG_ALPHA_LX164 \
SX164 CONFIG_ALPHA_SX164 \
DP264 CONFIG_ALPHA_DP264 \
Jensen CONFIG_ALPHA_JENSEN \
Noname CONFIG_ALPHA_NONAME \
Takara CONFIG_ALPHA_TAKARA \
Mikasa CONFIG_ALPHA_MIKASA \
Noritake CONFIG_ALPHA_NORITAKE \
Alcor CONFIG_ALPHA_ALCOR \
Miata CONFIG_ALPHA_MIATA \
Sable CONFIG_ALPHA_SABLE \
Rawhide CONFIG_ALPHA_RAWHIDE \
AlphaBook1 CONFIG_ALPHA_BOOK1 \
Ruffian CONFIG_ALPHA_RUFFIAN \
Platform2000 CONFIG_ALPHA_P2K" Cabriolet
"Generic CONFIG_ALPHA_GENERIC \
Alcor/Alpha-XLT CONFIG_ALPHA_ALCOR \
Alpha-XL CONFIG_ALPHA_XL \
AlphaBook1 CONFIG_ALPHA_BOOK1 \
Avanti CONFIG_ALPHA_AVANTI \
Cabriolet CONFIG_ALPHA_CABRIOLET \
DP264 CONFIG_ALPHA_DP264 \
EB164 CONFIG_ALPHA_EB164 \
EB64+ CONFIG_ALPHA_EB64P \
EB66 CONFIG_ALPHA_EB66 \
EB66+ CONFIG_ALPHA_EB66P \
Jensen CONFIG_ALPHA_JENSEN \
LX164 CONFIG_ALPHA_LX164 \
Miata CONFIG_ALPHA_MIATA \
Mikasa CONFIG_ALPHA_MIKASA \
Noname CONFIG_ALPHA_NONAME \
Noritake CONFIG_ALPHA_NORITAKE \
PC164 CONFIG_ALPHA_PC164 \
Platform2000 CONFIG_ALPHA_P2K \
Rawhide CONFIG_ALPHA_RAWHIDE \
Ruffian CONFIG_ALPHA_RUFFIAN \
SX164 CONFIG_ALPHA_SX164 \
Sable CONFIG_ALPHA_SABLE \
Takara CONFIG_ALPHA_TAKARA" Generic
# clear all implied options (don't want default values for those):
unset CONFIG_ALPHA_EV4 CONFIG_ALPHA_EV5 CONFIG_ALPHA_EV6
......@@ -64,6 +64,11 @@ unset CONFIG_ALPHA_T2 CONFIG_ALPHA_PYXIS
unset CONFIG_ALPHA_TSUNAMI CONFIG_ALPHA_MCPCIA
unset CONFIG_ALPHA_NEED_ROUNDING_EMULATION
if [ "$CONFIG_ALPHA_GENERIC" = "y" ]
then
define_bool CONFIG_PCI y
define_bool CONFIG_ALPHA_NEED_ROUNDING_EMULATION y
fi
if [ "$CONFIG_ALPHA_BOOK1" = "y" ]
then
define_bool CONFIG_ALPHA_NONAME y
......
......@@ -18,35 +18,32 @@ CONFIG_MODULES=y
# General setup
#
CONFIG_NATIVE=y
# CONFIG_ALPHA_AVANTI is not set
CONFIG_ALPHA_GENERIC=y
# CONFIG_ALPHA_ALCOR is not set
# CONFIG_ALPHA_XL is not set
# CONFIG_ALPHA_XLT is not set
# CONFIG_ALPHA_BOOK1 is not set
# CONFIG_ALPHA_AVANTI is not set
# CONFIG_ALPHA_CABRIOLET is not set
# CONFIG_ALPHA_DP264 is not set
# CONFIG_ALPHA_EB164 is not set
# CONFIG_ALPHA_EB64P is not set
# CONFIG_ALPHA_EB66 is not set
# CONFIG_ALPHA_EB66P is not set
# CONFIG_ALPHA_EB64P is not set
# CONFIG_ALPHA_EB164 is not set
# CONFIG_ALPHA_PC164 is not set
# CONFIG_ALPHA_LX164 is not set
# CONFIG_ALPHA_SX164 is not set
# CONFIG_ALPHA_DP264 is not set
# CONFIG_ALPHA_JENSEN is not set
# CONFIG_ALPHA_NONAME is not set
# CONFIG_ALPHA_TAKARA is not set
# CONFIG_ALPHA_LX164 is not set
# CONFIG_ALPHA_MIATA is not set
# CONFIG_ALPHA_MIKASA is not set
# CONFIG_ALPHA_NONAME is not set
# CONFIG_ALPHA_NORITAKE is not set
CONFIG_ALPHA_ALCOR=y
# CONFIG_ALPHA_MIATA is not set
# CONFIG_ALPHA_SABLE is not set
# CONFIG_ALPHA_PC164 is not set
# CONFIG_ALPHA_P2K is not set
# CONFIG_ALPHA_RAWHIDE is not set
# CONFIG_ALPHA_BOOK1 is not set
# CONFIG_ALPHA_RUFFIAN is not set
# CONFIG_ALPHA_P2K is not set
# CONFIG_ALPHA_SX164 is not set
# CONFIG_ALPHA_SABLE is not set
# CONFIG_ALPHA_TAKARA is not set
CONFIG_PCI=y
CONFIG_ALPHA_EV5=y
CONFIG_ALPHA_CIA=y
CONFIG_ALPHA_SRM=y
CONFIG_ALPHA_EISA=y
CONFIG_ALPHA_NEED_ROUNDING_EMULATION=y
# CONFIG_PCI_QUIRKS is not set
CONFIG_PCI_OLD_PROC=y
CONFIG_NET=y
......
......@@ -20,34 +20,96 @@ O_OBJS := entry.o traps.o process.o osf_sys.o irq.o signal.o setup.o \
OX_OBJS := alpha_ksyms.o
ifdef CONFIG_ALPHA_GENERIC
O_OBJS += core_apecs.o core_cia.o core_lca.o core_mcpcia.o core_pyxis.o \
core_t2.o core_tsunami.o \
sys_alcor.o sys_cabriolet.o sys_dp264.o sys_eb64p.o \
sys_jensen.o sys_miata.o sys_mikasa.o sys_noritake.o \
sys_rawhide.o sys_ruffian.o sys_sable.o sys_sio.o \
sys_sx164.o sys_takara.o \
es1888.o smc37c669.o smc37c93x.o
else
# Core logic support
ifdef CONFIG_ALPHA_APECS
O_OBJS += apecs.o
O_OBJS += core_apecs.o
endif
ifdef CONFIG_ALPHA_CIA
O_OBJS += cia.o
O_OBJS += core_cia.o
endif
ifdef CONFIG_ALPHA_LCA
O_OBJS += lca.o
O_OBJS += core_lca.o
endif
ifdef CONFIG_ALPHA_MCPCIA
O_OBJS += core_mcpcia.o
endif
ifdef CONFIG_ALPHA_PYXIS
O_OBJS += pyxis.o
O_OBJS += core_pyxis.o
endif
ifdef CONFIG_ALPHA_T2
O_OBJS += t2.o
O_OBJS += core_t2.o
endif
ifdef CONFIG_ALPHA_TSUNAMI
O_OBJS += tsunami.o
O_OBJS += core_tsunami.o
endif
ifdef CONFIG_ALPHA_MCPCIA
O_OBJS += mcpcia.o
# Board support
ifneq ($(CONFIG_ALPHA_ALCOR)$(CONFIG_ALPHA_XLT),)
O_OBJS += sys_alcor.o
endif
ifneq ($(CONFIG_ALPHA_CABRIOLET)$(CONFIG_ALPHA_EB164)$(CONFIG_ALPHA_EB66P)$(CONFIG_ALPHA_LX164)$(CONFIG_ALPHA_PC164),)
O_OBJS += sys_cabriolet.o
endif
ifdef CONFIG_ALPHA_DP264
O_OBJS += sys_dp264.o
endif
ifneq ($(CONFIG_ALPHA_EB64P)$(CONFIG_ALPHA_EB66),)
O_OBJS += sys_eb64p.o
endif
ifdef CONFIG_ALPHA_JENSEN
O_OBJS += sys_jensen.o
endif
ifdef CONFIG_ALPHA_MIATA
O_OBJS += sys_miata.o
endif
ifdef CONFIG_ALPHA_MIKASA
O_OBJS += sys_mikasa.o
endif
ifdef CONFIG_ALPHA_NORITAKE
O_OBJS += sys_noritake.o
endif
ifdef CONFIG_ALPHA_RAWHIDE
O_OBJS += sys_rawhide.o
endif
ifdef CONFIG_ALPHA_RUFFIAN
O_OBJS += sys_ruffian.o
endif
ifdef CONFIG_ALPHA_SABLE
O_OBJS += sys_sable.o
endif
ifneq ($(CONFIG_ALPHA_BOOK1)$(CONFIG_ALPHA_AVANTI)$(CONFIG_ALPHA_NONAME)$(CONFIG_ALPHA_P2K)$(CONFIG_ALPHA_XL),)
O_OBJS += sys_sio.o
endif
ifdef CONFIG_ALPHA_SX164
O_OBJS += sys_sx164.o
endif
ifdef CONFIG_ALPHA_TAKARA
O_OBJS += sys_takara.o
endif
ifneq ($(CONFIG_ALPHA_PC164)$(CONFIG_ALPHA_LX164),nn)
O_OBJS += smc37c93x.o
# Device support
ifdef CONFIG_ALPHA_MIATA
O_OBJS += es1888.o
endif
ifneq ($(CONFIG_ALPHA_SX164)$(CONFIG_ALPHA_MIATA)$(CONFIG_ALPHA_DP264),nnn)
ifneq ($(CONFIG_ALPHA_SX164)$(CONFIG_ALPHA_MIATA)$(CONFIG_ALPHA_DP264),)
O_OBJS += smc37c669.o
endif
ifneq ($(CONFIG_ALPHA_PC164)$(CONFIG_ALPHA_LX164),)
O_OBJS += smc37c93x.o
endif
endif # GENERIC
ifdef SMP
O_OBJS += smp.o
......@@ -55,9 +117,4 @@ endif
all: kernel.o head.o
head.o: head.s
head.s: head.S $(TOPDIR)/include/asm-alpha/system.h
$(CPP) -traditional $(AFLAGS) -o $*.s $<
include $(TOPDIR)/Rules.make
......@@ -25,6 +25,7 @@
#include <asm/softirq.h>
#include <asm/fpu.h>
#include <asm/irq.h>
#include <asm/machvec.h>
#define __KERNEL_SYSCALLS__
#include <asm/unistd.h>
......@@ -43,6 +44,7 @@ extern void __remlu (void);
extern void __divqu (void);
extern void __remqu (void);
EXPORT_SYMBOL(alpha_mv);
EXPORT_SYMBOL(local_bh_count);
EXPORT_SYMBOL(local_irq_count);
EXPORT_SYMBOL(enable_irq);
......@@ -121,7 +123,9 @@ EXPORT_SYMBOL(csum_ipv6_magic);
#ifdef CONFIG_MATHEMU_MODULE
extern long (*alpha_fp_emul_imprecise)(struct pt_regs *, unsigned long);
extern long (*alpha_fp_emul) (unsigned long pc);
EXPORT_SYMBOL(alpha_fp_emul_imprecise);
EXPORT_SYMBOL(alpha_fp_emul);
#endif
/*
......
This diff is collapsed.
/*
* linux/arch/alpha/kernel/bios32.h
*
* This file contains declarations and inline functions for interfacing
* with the PCI initialization routines in bios32.c.
*/
#define KB 1024
#define MB (1024*KB)
#define GB (1024*MB)
/*
* We can't just blindly use 64K for machines with EISA busses; they
* may also have PCI-PCI bridges present, and then we'd configure the
* bridge incorrectly.
*
* Also, we start at 0x8000 or 0x9000, in hopes to get all devices'
* IO space areas allocated *before* 0xC000; this is because certain
* BIOSes (Millennium for one) use PCI Config space "mechanism #2"
* accesses to probe the bus. If a device's registers appear at 0xC000,
* it may see an INx/OUTx at that address during BIOS emulation of the
* VGA BIOS, and some cards, notably Adaptec 2940UW, take mortal offense.
*
* Note that we may need this stuff for SRM_SETUP also, since certain
* SRM consoles screw up and allocate I/O space addresses > 64K behind
* PCI-to_PCI bridges, which can't pass I/O addresses larger than 64K,
* AFAIK.
*/
#define EISA_DEFAULT_IO_BASE 0x9000 /* start above 8th slot */
#define DEFAULT_IO_BASE 0x8000 /* start at 8th slot */
/*
* An XL is AVANTI (APECS) family, *but* it has only 27 bits of ISA address
* that get passed through the PCI<->ISA bridge chip. Although this causes
* us to set the PCI->Mem window bases lower than normal, we still allocate
* PCI bus devices' memory addresses *below* the low DMA mapping window,
* and hope they fit below 64Mb (to avoid conflicts), and so that they can
* be accessed via SPARSE space.
*
* We accept the risk that a broken Myrinet card will be put into a true XL
* and thus can more easily run into the problem described below.
*/
#define XL_DEFAULT_MEM_BASE (16*MB + 2*MB) /* 16M to 64M-1 is avail */
/*
* We try to make this address *always* have more than 1 bit set.
* this is so that devices like the broken Myrinet card will always have
* a PCI memory address that will never match a IDSEL address in
* PCI Config space, which can cause problems with early rev cards.
*
* However, APECS and LCA have only 34 bits for physical addresses, thus
* limiting PCI bus memory addresses for SPARSE access to be less than 128Mb.
*/
#define APECS_AND_LCA_DEFAULT_MEM_BASE (64*MB + 2*MB)
/*
* We try to make this address *always* have more than 1 bit set.
* this is so that devices like the broken Myrinet card will always have
* a PCI memory address that will never match a IDSEL address in
* PCI Config space, which can cause problems with early rev cards.
*
* Because CIA and PYXIS and T2 have more bits for physical addresses,
* they support an expanded range of SPARSE memory addresses.
*/
#define DEFAULT_MEM_BASE (128*MB + 16*MB)
/*
* PCI_MODIFY
*
* If this 0, then do not write to any of the PCI registers, merely
* read them (i.e., use configuration as determined by SRM). The SRM
* seem do be doing a less than perfect job in configuring PCI
* devices, so for now we do it ourselves. Reconfiguring PCI devices
* breaks console (RPB) callbacks, but those don't work properly with
* 64 bit addresses anyways.
*
* The accepted convention seems to be that the console (POST
* software) should fully configure boot devices and configure the
* interrupt routing of *all* devices. In particular, the base
* addresses of non-boot devices need not be initialized. For
* example, on the AXPpci33 board, the base address a #9 GXE PCI
* graphics card reads as zero (this may, however, be due to a bug in
* the graphics card---there have been some rumor that the #9 BIOS
* incorrectly resets that address to 0...).
*/
#define PCI_MODIFY (!alpha_use_srm_setup)
/*
* A small note about bridges and interrupts. The DECchip 21050 (and
* later) adheres to the PCI-PCI bridge specification. This says that
* the interrupts on the other side of a bridge are swizzled in the
* following manner:
*
* Dev Interrupt Interrupt
* Pin on Pin on
* Device Connector
*
* 4 A A
* B B
* C C
* D D
*
* 5 A B
* B C
* C D
* D A
*
* 6 A C
* B D
* C A
* D B
*
* 7 A D
* B A
* C B
* D C
*
* Where A = pin 1, B = pin 2 and so on and pin=0 = default = A.
* Thus, each swizzle is ((pin-1) + (device#-4)) % 4
*
* The following code swizzles for exactly one bridge. The routine
* common_swizzle below handles multiple bridges. But there are a
* couple boards that do strange things, so we define this here.
*/
static inline unsigned char
bridge_swizzle(unsigned char pin, unsigned int slot)
{
return (((pin-1) + slot) % 4) + 1;
}
extern void layout_all_busses(unsigned long io_base, unsigned long mem_base);
extern void enable_ide(long ide_base);
struct pci_dev;
extern void
common_pci_fixup(int (*map_irq)(struct pci_dev *dev, int slot, int pin),
int (*swizzle)(struct pci_dev *dev, int *pin));
extern int common_swizzle(struct pci_dev *dev, int *pinp);
/* The following macro is used to implement the table-based irq mapping
function for all single-bus Alphas. */
#define COMMON_TABLE_LOOKUP \
({ long _ctl_ = -1; \
if (slot >= min_idsel && slot <= max_idsel && pin < irqs_per_slot) \
_ctl_ = irq_tab[slot - min_idsel][pin]; \
_ctl_; })
......@@ -15,7 +15,7 @@
#define osf_vfork sys_fork
/*
* These offsets must match with "struct hae" in io.h:
* These offsets must match with alpha_mv in <asm/machvec.h>.
*/
#define HAE_CACHE 0
#define HAE_REG 8
......@@ -109,7 +109,7 @@
stq $3,24($30); \
stq $4,32($30); \
stq $28,144($30); \
lda $2,hae; \
lda $2,alpha_mv; \
stq $5,40($30); \
stq $6,48($30); \
stq $7,56($30); \
......@@ -130,7 +130,7 @@
stq $18,176($30)
#define RESTORE_ALL \
lda $19,hae; \
lda $19,alpha_mv; \
ldq $0,0($30); \
ldq $1,8($30); \
ldq $2,16($30); \
......@@ -1135,7 +1135,7 @@ sys_call_table:
.quad sys_sysinfo
.quad sys_sysctl
.quad sys_idle /* 320 */
.quad sys_umount
.quad sys_oldumount
.quad sys_swapon
.quad sys_times
.quad sys_personality
......
/*
* linux/arch/alpha/kernel/es1888.c
*
* Init the built-in ES1888 sound chip (SB16 compatible)
*/
#include <linux/init.h>
#include <asm/io.h>
#include "proto.h"
void __init
es1888_init(void)
{
/* Sequence of IO reads to init the audio controller */
inb(0x0229);
inb(0x0229);
inb(0x0229);
inb(0x022b);
inb(0x0229);
inb(0x022b);
inb(0x0229);
inb(0x0229);
inb(0x022b);
inb(0x0229);
inb(0x0220); /* This sets the base address to 0x220 */
/* Sequence to set DMA channels */
outb(0x01, 0x0226); /* reset */
inb(0x0226); /* pause */
outb(0x00, 0x0226); /* release reset */
while (!(inb(0x022e) & 0x80)) /* wait for bit 7 to assert*/
continue;
inb(0x022a); /* pause */
outb(0xc6, 0x022c); /* enable extended mode */
while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */
continue;
outb(0xb1, 0x022c); /* setup for write to Interrupt CR */
while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */
continue;
outb(0x14, 0x022c); /* set IRQ 5 */
while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */
continue;
outb(0xb2, 0x022c); /* setup for write to DMA CR */
while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */
continue;
outb(0x18, 0x022c); /* set DMA channel 1 */
}
......@@ -4,62 +4,58 @@
* (C) Copyright 1998 Linus Torvalds
*/
#ifdef __alpha_cix__
#define STT(reg,val) asm volatile ("ftoit $f"#reg",%0" : "=r"(val));
#else
#define STT(reg,val) asm volatile ("stt $f"#reg",%0" : "=m"(val));
#endif
unsigned long
alpha_read_fp_reg (unsigned long reg)
{
unsigned long r;
unsigned long val;
switch (reg) {
case 0: asm ("stt $f0,%0" : "m="(r)); break;
case 1: asm ("stt $f1,%0" : "m="(r)); break;
case 2: asm ("stt $f2,%0" : "m="(r)); break;
case 3: asm ("stt $f3,%0" : "m="(r)); break;
case 4: asm ("stt $f4,%0" : "m="(r)); break;
case 5: asm ("stt $f5,%0" : "m="(r)); break;
case 6: asm ("stt $f6,%0" : "m="(r)); break;
case 7: asm ("stt $f7,%0" : "m="(r)); break;
case 8: asm ("stt $f8,%0" : "m="(r)); break;
case 9: asm ("stt $f9,%0" : "m="(r)); break;
case 10: asm ("stt $f10,%0" : "m="(r)); break;
case 11: asm ("stt $f11,%0" : "m="(r)); break;
case 12: asm ("stt $f12,%0" : "m="(r)); break;
case 13: asm ("stt $f13,%0" : "m="(r)); break;
case 14: asm ("stt $f14,%0" : "m="(r)); break;
case 15: asm ("stt $f15,%0" : "m="(r)); break;
case 16: asm ("stt $f16,%0" : "m="(r)); break;
case 17: asm ("stt $f17,%0" : "m="(r)); break;
case 18: asm ("stt $f18,%0" : "m="(r)); break;
case 19: asm ("stt $f19,%0" : "m="(r)); break;
case 20: asm ("stt $f20,%0" : "m="(r)); break;
case 21: asm ("stt $f21,%0" : "m="(r)); break;
case 22: asm ("stt $f22,%0" : "m="(r)); break;
case 23: asm ("stt $f23,%0" : "m="(r)); break;
case 24: asm ("stt $f24,%0" : "m="(r)); break;
case 25: asm ("stt $f25,%0" : "m="(r)); break;
case 26: asm ("stt $f26,%0" : "m="(r)); break;
case 27: asm ("stt $f27,%0" : "m="(r)); break;
case 28: asm ("stt $f28,%0" : "m="(r)); break;
case 29: asm ("stt $f29,%0" : "m="(r)); break;
case 30: asm ("stt $f30,%0" : "m="(r)); break;
case 31: asm ("stt $f31,%0" : "m="(r)); break;
default:
break;
case 0: STT( 0, val); break;
case 1: STT( 1, val); break;
case 2: STT( 2, val); break;
case 3: STT( 3, val); break;
case 4: STT( 4, val); break;
case 5: STT( 5, val); break;
case 6: STT( 6, val); break;
case 7: STT( 7, val); break;
case 8: STT( 8, val); break;
case 9: STT( 9, val); break;
case 10: STT(10, val); break;
case 11: STT(11, val); break;
case 12: STT(12, val); break;
case 13: STT(13, val); break;
case 14: STT(14, val); break;
case 15: STT(15, val); break;
case 16: STT(16, val); break;
case 17: STT(17, val); break;
case 18: STT(18, val); break;
case 19: STT(19, val); break;
case 20: STT(20, val); break;
case 21: STT(21, val); break;
case 22: STT(22, val); break;
case 23: STT(23, val); break;
case 24: STT(24, val); break;
case 25: STT(25, val); break;
case 26: STT(26, val); break;
case 27: STT(27, val); break;
case 28: STT(28, val); break;
case 29: STT(29, val); break;
case 30: STT(30, val); break;
case 31: STT(31, val); break;
}
return r;
return val;
}
#if 1
/*
* This is IMHO the better way of implementing LDT(). But it
* has the disadvantage that gcc 2.7.0 refuses to compile it
* (invalid operand constraints), so instead, we use the uglier
* macro below.
*/
# define LDT(reg,val) \
asm volatile ("ldt $f"#reg",%0" : : "m"(val));
#ifdef __alpha_cix__
#define LDT(reg,val) asm volatile ("itoft %0,$f"#reg : : "r"(val));
#else
# define LDT(reg,val) \
asm volatile ("ldt $f"#reg",0(%0)" : : "r"(&val));
#define LDT(reg,val) asm volatile ("ldt $f"#reg",%0" : : "m"(val));
#endif
void
......@@ -98,7 +94,5 @@ alpha_write_fp_reg (unsigned long reg, unsigned long val)
case 29: LDT(29, val); break;
case 30: LDT(30, val); break;
case 31: LDT(31, val); break;
default:
break;
}
}
......@@ -7,7 +7,6 @@
* the kernel global pointer and jump to the kernel entry-point.
*/
#define __ASSEMBLY__
#include <asm/system.h>
#define halt call_pal PAL_halt
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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