Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
linux
Commits
21d0c0d1
Commit
21d0c0d1
authored
17 years ago
by
Linus Torvalds
Browse files
Options
Download
Email Patches
Plain Diff
Import 2.3.4pre2
parent
c8f52932
Changes
154
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
499 additions
and
395 deletions
+499
-395
Documentation/Configure.help
Documentation/Configure.help
+108
-0
Documentation/filesystems/isofs.txt
Documentation/filesystems/isofs.txt
+2
-0
Documentation/isdn/README.TimRu.De
Documentation/isdn/README.TimRu.De
+0
-296
Documentation/networking/decnet.txt
Documentation/networking/decnet.txt
+146
-0
Documentation/sound/CMI8330
Documentation/sound/CMI8330
+33
-21
Documentation/sound/CMI8338
Documentation/sound/CMI8338
+32
-0
arch/ppc/kernel/checks.c
arch/ppc/kernel/checks.c
+0
-1
arch/ppc/xmon/start.c
arch/ppc/xmon/start.c
+0
-1
arch/sparc64/kernel/etrap.S
arch/sparc64/kernel/etrap.S
+4
-6
arch/sparc64/kernel/head.S
arch/sparc64/kernel/head.S
+2
-1
arch/sparc64/kernel/process.c
arch/sparc64/kernel/process.c
+1
-1
arch/sparc64/kernel/rtrap.S
arch/sparc64/kernel/rtrap.S
+1
-2
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+10
-9
arch/sparc64/kernel/trampoline.S
arch/sparc64/kernel/trampoline.S
+3
-1
arch/sparc64/kernel/traps.c
arch/sparc64/kernel/traps.c
+30
-7
arch/sparc64/kernel/unaligned.c
arch/sparc64/kernel/unaligned.c
+8
-5
arch/sparc64/lib/VIS.h
arch/sparc64/lib/VIS.h
+19
-4
arch/sparc64/lib/VISbzero.S
arch/sparc64/lib/VISbzero.S
+21
-7
arch/sparc64/lib/VIScopy.S
arch/sparc64/lib/VIScopy.S
+73
-32
arch/sparc64/lib/VIScsum.S
arch/sparc64/lib/VIScsum.S
+6
-1
No files found.
Documentation/Configure.help
View file @
21d0c0d1
...
...
@@ -3110,6 +3110,44 @@ CONFIG_SPX
The module will be called af_spx.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
DECnet networking
CONFIG_DECNET
The DECnet networking protocol was used in many products made by
Digital (now Compaq). It provides reliable stream and sequenced
packet communications over which run a variety of services similar
to those which run over TCP/IP.
To find some tools to use with the kernel layer support, please
look at Patrick Caulfield's web site:
http://linux.dreamtime.org/decnet/
More detailed documentation is available in the
Documentation/networking/decnet.txt file.
Be sure to turn on the CONFIG_PROCFS and CONFIG_SYSCTL options
when using DECnet, since you will need sysctl support to aid in
configuration at run time.
DECnet SIOCFIGCONF support
CONFIG_DECNET_SIOCGIFCONF
This option should only be turned on if you are really sure that
you know what you are doing. It can break other applications which
use this system call and the proper way to get the information
provided by this call is to use rtnetlink.
DECnet Router Support
CONFIG_DECNET_ROUTER
Add support for turning your DECnet Endnode into a level 1 or 2
router. This is an unfinished option for developers only. If you
do turn it on, then make sure you also have rtnetlink configured
in, since thats the only current method of configuration.
DECnet Raw Socket Support
CONFIG_DECNET_RAW
Add support for the SOCK_RAW type under DECnet. Used by userland
routing programs to receive routing messages from the kernel and
also as a general debugging aid to see whats going on "under the hood".
AppleTalk DDP
CONFIG_ATALK
AppleTalk is the way Apple computers speak to each other on a
...
...
@@ -7525,6 +7563,18 @@ CONFIG_UFS_FS_WRITE
Say Y here if you want to try writing to UFS partitions. This is
experimental, so you should back up your UFS partitions beforehand.
EFS filesystem support (experimental)
CONFIG_EFS_FS
EFS is the filesystem used for CDROMs and filesystems by SGI's IRIX.
This implementation only offers read-only access. If you don't know
what all this is about, it's safe to say N. For more information
about EFS see its homepage at http://aeschi.ch.eu.org/efs/.
SGI disklabel support
CONFIG_SGI_DISKLABEL
Say Y to this only if you plan on mounting disks with SGI disklabels.
This is not required to mount EFS-format CDROMs.
BSD disklabel (FreeBSD partition tables) support
CONFIG_BSD_DISKLABEL
FreeBSD uses its own hard disk partition scheme on your PC. It
...
...
@@ -11560,6 +11610,64 @@ CONFIG_BVME6000_SCC
boards from BVM Ltd. Everyone using one of these boards should say
Y here.
Universal Serial Bus (USB) Support (Experimental)
CONFIG_USB
This will enable support for the Universal Serial Bus (USB). USB
allows you to connect up to 127 external devices such as keyboards,
mice, printers and modems to your computer through a USB connector.
This code can also be built as a module (i.e. code outside the
kernel that can be added and removed at runtime), consult
Documentation/modules.txt for more information.
UHCI (intel PIIX4 and others) support
CONFIG_USB_UHCI
The UHCI is the USB host controller for many computers, and is built
into all recent boards with intel PCI chipsets. This driver is
needed for these motherboards to support USB.
OHCI (compaq and some others) support
CONFIG_USB_OHCI
The OHCI (Open Host Controller Interface) is the USB host controller
on most non-Intel architectures, several USB-adding PCI cards, and
is on several x86 compatibles with non-Intel chipsets. This driver
is needed for these motherboards to support USB. There is presently
two OHCI drivers in development. Say 'N' here if you would like to
compile the other OHCI driver into the linux kernel.
OHCI-HCD (other OHCI opt. Virt. Root Hub) support
CONFIG_USB_OHCI_HCD
The OHCI (Open Host Controller Interface) is the USB host controller
on most non-Intel architectures, several USB-adding PCI cards, and
is on several x86 compatibles with non-Intel chipsets. This driver
is needed for these motherboards to support USB. There is presently
two OHCI drivers in development.
USB hub support
CONFIG_USB_HUB
To expand beyond the USB ports on the computer, a device called a
hub is used. This driver supports hubs, allowing them to be used.
Say 'Y'
USB mouse support
CONFIG_USB_MOUSE
This driver allows mice to work under the USB stack. It currently
patches into /dev/ps2aux, although it does not require the ps2
mouse code to be included in the kernel as well.
USB keyboard support
CONFIG_USB_KBD
This driver allows usb keyboards to work under the USB stack.
USB audio parsing support (Preliminary)
CONFIG_USB_AUDIO
This driver will eventually handle audio devices, such
as USB speakers.
USB Abstract Control Model support (Preliminary)
CONFIG_USB_ACM
This driver allows for devices which support the Abstract Control Model,
including many USB-based modems, ISDN adapters, and network adapters.
#
# A couple of things I keep forgetting:
# capitalize: AppleTalk, Ethernet, DOS, DMA, FAT, FTP, Internet,
...
...
This diff is collapsed.
Click to expand it.
Documentation/filesystems/isofs.txt
View file @
21d0c0d1
...
...
@@ -27,3 +27,5 @@ Mount options unique to the isofs filesystem.
nojoliet Ignore Joliet extensions if they are present.
norock Ignore Rock Ridge extensions if they are present.
unhide Show hidden files.
session=x Select number of session on multisession CD
sbsector=xxx Session begins from sector xxx
This diff is collapsed.
Click to expand it.
Documentation/isdn/README.TimRu.De
deleted
100644 → 0
View file @
c8f52932
--( Version: 11.10.1997 )--
TimRu-Erweiterungen:
====================
1. erfolglose Anwahlversuche per ICMP zurueckmelden
---------------------------------------------------
isdnctrl dialtimeout <name> <timeout>
name: Name des Interfaces
timeout: -1: kein Waehl-Timeout
0: jede Telefonnummer dialmax-mal probieren
>0: Zeitraum in Sekunden, in dem die Anwahl versucht wird
isdnctrl dialtimeout bewirkt, dass die Anwahl der Gegenstelle im Fehler-
fall nicht unbegrenzt versucht wird, sondern entweder nach einer bestimmten
Anzahl von Versuchen oder nach einem bestimmten Zeitraum abgebrochen wird
und alle ausstehenden Pakete fuer den durch isdnctrl dialwait bestimmten
Zeitraum mit ICMP_NET_UNREACHABLE beantwortet werden.
isdnctrl dialwait <name> <seconds>
name: Name des Interfaces
seconds: 0: keine Waehl-Unterdrueckung im Fehlerfall
>0: Zeit in Sekunden, in der nach einem erfolglosen Anwahl-
versuch Pakete mit ICMP_NET_UNREACHABLE beantwortet werden
1.1 einzelne Interfaces stoppen / starten
-----------------------------------------
isdnctrl status <name> <status>
name: Name des Interfaces
status: on: Interface einschalten
off: Interface ausschalten
Dieser Befehl wirkt wie 'isdnctrl system on/off' auf Interface-Ebene.
2. bessere Kontrolle ueber Aufbau und Hangup einer Verbindung
-------------------------------------------------------------
isdnctrl <cmd> <name> bringup <seconds> <rule>
isdnctrl <cmd> <name> keepup in <seconds> <rule>
isdnctrl <cmd> <name> keepup out <seconds> <rule>
isdnctrl <cmd> <name> keepup both <seconds> <rule>
cmd: addrule: Regel am Ende der Regelliste anfuegen
insrule: Regel am Anfang der Regelliste einfuegen
delrule: Regel loeschen
default: Was tun, wenn keine Regel passt?
showrules: alle Regeln anzeigen
flushrules: alle Regeln einer Art loeschen (bringup, ...)
flushallrules: alle Regeln loeschen
name: Name des Interfaces
seconds: Mindester Hangup-Timeout ab jetzt
rule: Regel, auf die ein Paket passen muss, damit die Verbindung
aufgebaut oder der Hangup-Timeout verlaengert wird
Eine passende Bringup-Regel erlaubt den Aufbau der Verbindung,
wenn ihr Timeout > 0 ist. Eine Bringup-Regel mit einen Timeout == 0
verhindert einen Verbindungsaufbau. Dieser Timeout muss eigentlich nur
so gross sein, dass die Verbindung zum Gegenrechner erfolgreich
zustande kommt, da das ausloesende Datenpaket danach durch die
Keepup-Logik 'geht' und der Hangup-Timeout erneut berechnet wird.
Eine passende Keepup-Regel verlaengert den Hangup-Timeout, wobei
nach eingehenden und ausgehenden Paketen unterschieden werden kann.
Die Kontrolle eines Paketes stoppt bei der ersten passenden Regel, falls
keine Regel anwendbar ist, gilt die Default-Regel.
Die Regeln haben folgenden Aufbau:
ip/icmp <src>/<mask> <type> <dst>/<mask>
ip/tcp <src>/<mask> <port> <dst>/<mask> <port>
ip/udp <src>/<mask> <port> <dst>/<mask> <port>
ip/* <src>/<mask> <dst>/<mask>
ip/any <src>/<mask> <dst>/<mask>
ipx/*
ipx/any
ppp/ipcp
ppp/ipxcp
ppp/ccp
ppp/lcp
ppp/chap
ppp/pap
ppp/lqr
ppp/*
ppp/any
*/*
any
src: Absender-Adresse des Paketes als Nummer oder Name
dst: Empfaenger-Adresse des Paketes als Nummer oder Name
mask: Subnet-Maske als Anzahl Bits oder als Maske
type: ICMP-Message-Type als Nummer
port: Portnummer als Nummer oder Name
Wildcards ('*', 'any') sind ueberall erlaubt.
Fuer <src> und <dst> gilt:
<host>: Host-Adresse als Nummer oder Name,
Subnet-Mask /32
<host>/<mask>: Host-Adresse als Nummer oder Name,
Subnet-Mask als Anzahl Bits oder Maske
<network>: Netzwerk-Adresse als Nummer oder Name,
Subnet-Mask /32
<network>/<mask>: Host-Adresse als Nummer oder Name,
Subnet-Mask als Anzahl Bits oder Maske
0.0.0.0/0
0/0
*
any: Wildcard, passt auf jede Adresse.
Fuer <ports> gilt:
<from>-<to>: alle Ports von <from> bis <to>, numerische Angabe
<from>-: alle Ports von <from> bis 65535, numerische Angabe
-<to>: alle Ports von 0 bis <to>, numerische Angabe
<port>: ein Port als Nummer oder Name
-, *
oder any: alle Ports
Beginnt die Regel mit einem '!' oder mit 'not', so dreht sich ihre Aussage um:
falls sie NICHT passt, wird die Verbindung aufgebaut, bzw. der
Hangup-Timeout verlaengert.
Default-Regeln werden folgendermassen angegeben:
isdnctrl default <name> bringup <timeout>
name: Name des Interfaces
timeout: 0: Verbindung wird nicht aufgebaut
>0: Verbindung wird aufgebaut, anfaenglicher Timeout
ist <timeout>.
isdnctrl default <name> keepup in <seconds>
isdnctrl default <name> keepup out <seconds>
isdnctrl default <name> keepup both <seconds>
name: Name des Interfaces
seconds: Mindester Hangup-Timeout
3. Budget-Erweiterungen
-----------------------
Diese Erweiterung erlaubt es, bestimmte 'Verbrauchswerte' pro
Zeitraum zu limitieren. Falls ein Budget aufgebraucht ist, findet
keine Anwahl mehr statt und eine bestehende Verbindung wird unterbrochen.
Sobald wieder alle Budgets verfuegbar sind, werden wieder Verbindungen
zugelassen.
Die Gebuehrenimpuls-Zaehlung setzt momentan auf der Uebertragung der
CINF-Pakete, also der Gebuehreninformation waehrend der Verbindung auf.
Unmittelbar nach Aufbau der Verbindung wird der erste Gebuehrenimpuls
'angenommen'.
Fuer ISDN-Anschluesse, bei denen die Gebuehren erst am Ende der Ver-
bindung uebertragen werden, faellt uns bestimmt auch noch was ein ;-).
isdnctrl budget <name> <budget-type> <amount> <period>
setzt die Werte eines bestimmten Budgets. Ein aufgebrauchtes
Budget wird unmittelbar wieder aktiviert.
budget-type: dial: Anzahl der Anwahlversuche (erfolgreich oder
erfolglos) pro Periode
charge: Anzahl der Gebuehreneinheiten pro Periode
online: Online-Zeit pro Periode
amount: Hoehe des Budgets. Bei <budget-type> 'dial' oder 'charge'
ist das die Anzahl Anwahlen oder Einheiten, bei 'online'
eine Zeitangabe (s.u.)
period: Dauer der Periode in folgendem Format (<n> steht fuer eine
natuerliche Zahl):
<n>
<n>s
<n>sec, <n> Sekunden
<n>m
<n>min, <n> Minuten
<n>h
<n>hour, <n> Stunden
<n>d
<n>day, <n> Tage
<n>w
<n>week, <n> Wochen (a 7 Tage)
<n>M
<n>month, <n> Monate (a 30 Tage)
<n>y
<n>year, <n> Jahre (a 365 Tage)
Diese Angaben koennen miteinander kombiniert werden, z.B.:
2h30m15
2hour,30min,15sec
1M2week,1day,8h
isdnctrl budget <name> <budget-type> off
schaltet die Kontrolle des entsprechenden Budgets aus
isdnctrl budget <name> showbudgets
zeigt die momentaten Budgets an
isdnctrl budget <name> savebudgets
gibt die momentaten Budgets in einen Format aus, das vom Befehl 'restore-
budgets' wieder eingelesen kann
isdnctrl budget <name> restorebudgets <saved-budget> ...
setzt die Budgets wieder auf die vorher mit 'savebudgets' ausgegebenen
Werte. Damit koennen Budgets auch ueber den Reboot der Maschine hinaus
Gueltigkeit haben.
Hier ein Beispiel fuer die TimRu-Erweiterung:
# Alle Regeln loeschen
isdnctrl flushallrules ippp0
# Default: jeder Datenverkehr setzt den Hangup-Timeout auf 60 Sek.
isdnctrl default ippp0 keepup both 60
# FTP und Telnet erhoehen den Timeout auf 5 Minuten
isdnctrl addrule ippp0 keepup both 300 ip/tcp 0/0 20-23 0/0 -
# Anzeige der Regeln:
isdnctrl showrules ippp0
# ... erzeugt folgende Ausgabe:
Timeout rules for interface ippp0:
Default bringup policy: true
Default huptimeout for incoming packets: 60 sec.
Default huptimeout for outgoing packets: 60 sec.
Current huptimeout: 60 sec.
Time until hangup: 45 sec.
Keepup-rules for incoming ip-packets:
1-1-0 keepup_in 300 ip/tcp 0/0 20-23 0/0 *
Keepup-rules for outgoing ip-packets:
2-1-0 keepup_out 300 ip/tcp 0/0 * 0/0 20-23
Hier ein Beispiel fuer die Budget-Erweiterung:
# Hoechstens 60 Anwahlversuche pro Stunde
isdnctrl budget ippp0 dial 60 1h
# Hoechstens 3000 Einheiten pro Monat
isdnctrl budget ippp0 charge 3000 1M
# Hoechstens 8 Stunden online pro Tag
isdnctrl budget ippp0 online 8h 1d
# Anzeige der Budgets:
isdnctrl showbudgets ippp0
# ... erzeugt nach kurzer Zeit folgende Ausgabe:
Budgets for interface ippp0:
TYPE AMOUNT PERIOD USED SINCE
dial 60 1h 1 01.07.1997, 17:43:40
charge 3000 1M 2 01.07.1997, 17:43:49
online 8h 1d 2m26s 01.07.1997, 17:43:57
Zum Nachfuehren der Budgets ueber einen laengeren Zeitraum koennte man
folgende Methode verwenden:
beim Herunterfahren oder per 'cron' jede Minute:
INTERFACES="ippp0 ippp1 ippp2"
for i in $INTERFACES; do
isdnctrl savebudgets $i > /var/isdn/saved-budgets/$i
done
und dann beim Neustart:
for f in /var/isdn/saved-budgets/*; do
isdnctrl restorebudgets ${f##*/} `cat $f`
done
This diff is collapsed.
Click to expand it.
Documentation/networking/decnet.txt
0 → 100644
View file @
21d0c0d1
Linux DECnet Networking Layer Information
===========================================
1) Other documentation....
o Project Home Pages
http://www.sucs.swan.ac.uk/~rohan/DECnet/index.html - Kernel info
http://linux.dreamtime.org/decnet/ - Userland tools
o FTP sites
ftp://ftp.sucs.swan.ac.uk/pub/Linux/DECnet/
- Swansea University Computer Society DECnet Archive
(contains kernel patches and info)
- Mirror of userland tools on ftp.dreamtime.org
ftp://ftp.dreamtime.org/pub/linux/decnet/
- Patrick Caulfield's archive of userland tools and
Eduardo Serrat's kernel patches
2) Configuring the kernel
Be sure to turn on the following options:
CONFIG_DECNET (obviously)
CONFIG_PROCFS (to see what's going on)
CONFIG_SYSCTL (for easy configuration)
if you want to try out router support (not properly debugged and not
complete yet), you'll need the following options as well...
CONFIG_DECNET_RAW (to receive routing packets)
CONFIG_DECNET_ROUTER (to be able to add/delete routes)
CONFIG_NETLINK (to allow rtnetlink)
CONFIG_RTNETLINK (for communication with the kernel routing layer)
3) Command line options
The kernel command line takes options looking like the following:
decnet=1,2,1
the first two numbers are the node address 1,2 = 1.2 (yes, you must use
commas when specifying them). The third number is the level number for routers
and is optional. It is probably a good idea to set the DECnet address on boot
like this rather than trying to do it later.
There are also equivalent options for modules. The node address and type can
also be set through the /proc/sys/net/decnet/ files, as can other system
parameters.
Currently the only supported device is ethernet. You'll have to set the
ethernet address of your ethernet card according to the DECnet address
of the node in order for it to be recognised (and thus appear in
/proc/net/decnet_dev). There is a utility available at the above
FTP sites called dn2ethaddr which can compute the correct ethernet
address to use. The address can be set by ifconfig either before at
at the time the device is brought up. If you are using RedHat you can
add the line:
MACADDR=AA:00:04:00:03:04
or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or
wherever your network card's configuration lives.
You will also need to set /proc/sys/net/decnet/default_device to the
device you want DECnet to route packets out of when no specific route
is available. Usually this will be eth0, for example:
echo -n "eth0" >/proc/sys/net/decnet/default_device
There is a list of what the other files under /proc/sys/net/decnet/ do
on the kernel patch web site (shown above).
4) How can I tell if its working ?
Here is a quick guide of what to look for in order to know if your DECnet
kernel subsystem is working.
- Is the node address set (see /proc/sys/net/decnet/node_address)
- Is the node of the correct type (see /proc/sys/net/decnet/node_type)
- Is the Ethernet MAC address of each Ethernet card set to match
the DECnet address. If in doubt use the dn2ethaddr utility available
at the ftp archive.
- If the previous two steps are satisfied, and the Ethernet card is up,
you should find that it is listed in /proc/net/decnet_dev and also
that it appears as a directory in /proc/sys/net/decnet/conf/. The
loopback device (lo) should also appear and is required to communicate
within a node.
- If you have any DECnet routers on your network, they should appear
in /proc/net/decnet_neigh, otherwise this file will only contain the
entry for the node itself (if it doesn't check to see if lo is up).
- If you want to send to any node which is not listed in the
/proc/net/decnet_neigh file, you'll need to set the default device
to point to an Ethernet card with connection to a router. This is
again done with the /proc/sys/net/decnet/default_device file.
- Try starting a simple server and client, like the dnping/dnmirror
over the loopback interface. With luck they should communicate.
For this step and those after, you'll need the DECnet library
which can be obtained from the above ftp sites as well as the
actual utilities themselves.
- If this seems to work, then try talking to a node on your local
network, and see if you can obtain the same results.
- At this point you are on your own... :-)
5) How to send a bug report
If you've found a bug and want to report it, then there are several things
you can do to help me work out exactly what it is that is wrong. Useful
information (a lot of which is essential) includes:
- What kernel version are you running ?
- What version of the patch are you running ?
- How far though the above set of tests can you get ?
- What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ?
- Which services are you running ?
- Which client caused the problem ?
- How much data was being transfered ?
- Was the network congested ?
- If there was a kernel panic, please run the output through ksymoops
before sending it to me, otherwise its _useless_.
- How can the problem be reproduced ?
- Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of
tcpdump don't understand how to dump DECnet properly, so including
the hex listing of the packet contents is essential, usually the -x flag.
You may also need to increase the length grabbed with the -s flag)
6) Mailing list
If you are keen to get involved in development, or want to ask questions
about configuration, or even just report bugs, then there is a mailing
list that you can join: send mail to majordomo@dreamtime.org with
subscribe linux-decnet
as the body of the message.
7) Legal Info
The Linux DECnet project team have placed their code under the GPL. The
software is provided "as is" and without warranty express or implied.
DECnet is a trademark of Compaq. This software is not a product of
Compaq. We acknowledge the help of people at Compaq in providing extra
documentation above and beyond what was previously publicly available.
Steve Whitehouse <SteveW@ACM.org>
This diff is collapsed.
Click to expand it.
Documentation/sound/CMI8330
View file @
21d0c0d1
How to enable CMI 8330 soundchip on Linux
How to enable CMI 8330
(SOUNDPRO)
soundchip on Linux
------------------------------------------
Stefan Laudat <Stefan.Laudat@asit.ro>
Hello folks,
The CMI8330 soundchip is a very small chip found on many recent
motherboards. In order to use it you just have to use a proper
isapnp.conf and a little bit of patience.
[Note: The CMI 8338 is unrelated and right now unsupported]
Of course you will have to compile kernel sound support as module,
as shown below:
In order to use CMI8330 under Linux you just have to use a proper isapnp.conf, a good isapnp and a little bit of patience. I use isapnp 1.17, but
you may get a better one I guess at http://www.roestock.demon.co.uk/isapnptools/.
Of course you will have to compile kernel sound support as module, as shown below:
CONFIG_SOUND=m
CONFIG_SOUND_OSS=m
CONFIG_SOUND_SB=m
CONFIG_SOUND_ADLIB=m
CONFIG_SOUND_MPU401=m
#
Just for fun :)
#
Mikro$chaft sound system (kinda useful here ;))
CONFIG_SOUND_MSS=m
The /etc/isapnp.conf file will be:
<snip below>
(READPORT 0x0203)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
(VERIFYLD N)
# WSS
(CONFIGURE CMI0001/16777472 (LD 0
(IO 0 (SIZE 8) (BASE 0x0530))
(IO 1 (SIZE 8) (BASE 0x0388))
(INT 0 (IRQ
5
(MODE +E)))
(INT 0 (IRQ
7
(MODE +E)))
(DMA 0 (CHANNEL 0))
(NAME "CMI0001/16777472[0]{CMI8330/C3D Audio Adapter}")
(ACT Y)
))
#
Control device ?
#
MPU
(CONFIGURE CMI0001/16777472 (LD 1
(IO 0 (SIZE 2) (BASE 0x0330))
...
...
@@ -57,10 +59,11 @@ CONFIG_SOUND_MSS=m
(ACT Y)
))
# SB...
# SoundBlaster
(CONFIGURE CMI0001/16777472 (LD 3
(IO 0 (SIZE 16) (BASE 0x0220))
(INT 0 (IRQ
7
(MODE +E)))
(INT 0 (IRQ
5
(MODE +E)))
(DMA 0 (CHANNEL 1))
(DMA 1 (CHANNEL 5))
(NAME "CMI0001/16777472[3]{CMI8330/C3D Audio Adapter}")
...
...
@@ -74,13 +77,22 @@ CONFIG_SOUND_MSS=m
The module sequence is trivial:
/sbin/modprobe sound
# You need to load the ad1848 module first. That matters, otherwise the
# chip falls into soundblaster compatibility and you won't get it back out
/sbin/insmod ad1848 io=0x530 dma=0 irq=5 soundpro=1
/sbin/insmod soundcore
/sbin/insmod sound
/sbin/insmod uart401
/sbin/insmod sb io=0x220 irq=5 dma=1 dma16=-1
/sbin/insmod mpu401 io=0x330
/sbin/insmod opl3 io=0x388
# insert this first
/sbin/insmod ad1848 io=0x530 irq=7 dma=0 soundpro=1
# The sb module is an alternative to the ad1848 (Microsoft Sound System)
# Anyhow, this is full duplex and has MIDI
/sbin/insmod sb io=0x220 dma=1 dma16=5 irq=5 mpu_io=0x330
The soundchip is now fully initialized. Enjoy it.
Alma Chao <elysian@ethereal.torsion.org> suggests the following /etc/conf.modules:
alias sound ad1848
alias synth0 opl3
options ad1848 io=0x530 irq=7 dma=0 soundpro=1
options opl3 io=0x388
This diff is collapsed.
Click to expand it.
Documentation/sound/CMI8338
0 → 100644
View file @
21d0c0d1
Audio driver for CM8338/CM8738 chips by Chen-Li Tien
Be aware: C-Media Electronics Inc. is basically an IC design house,
and whose development of software drivers is mainly for use by its OEM
customers in their products. C-Media Electronics Inc. itself does not
manufacture end-user products, such as PC or sound cards, so it can
not fully control the drivers provided to consumers. Drivers provided
at this site, therefore, MAY NOT BE APPLICABLE to all sound cards.
Drivers you download from this site may function well at certain
situation, but C-Media Electronics Inc. does not give any guarantee or
assurances. Please be aware that these drivers might cause some
technical difficulties when installed
1. Config cm8338 driver by 'make menuconfig' or 'make config' command.
2. Please select Sound Card (CONFIG_SOUND=m) support and CMPCI driver (CONFIG_SOUND_CMPCI=m) as modules. Resident mode not tested.
3. Compile the kernel if necessary.
4. Compile the modules by 'make modules'.
5. Install the modules by 'make modules_install'
6. Before first time to run the driver, create module dependency by 'depmod -a'
7. To install the driver, enter 'modprobe cmpci'.
Bugs:
1. Real player cannot be run (the same as es1371).
This diff is collapsed.
Click to expand it.
arch/ppc/kernel/checks.c
View file @
21d0c0d1
#include <linux/config.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
...
...
This diff is collapsed.
Click to expand it.
arch/ppc/xmon/start.c
View file @
21d0c0d1
...
...
@@ -2,7 +2,6 @@
* Copyright (C) 1996 Paul Mackerras.
*/
#include <linux/string.h>
#include <linux/config.h>
#include <asm/machdep.h>
#include <asm/io.h>
#include <asm/page.h>
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/etrap.S
View file @
21d0c0d1
/*
$Id
:
etrap
.
S
,
v
1
.4
0
199
8
/
0
6
/
12
1
4
:
5
4
:
0
3
jj
Exp
$
/*
$Id
:
etrap
.
S
,
v
1
.4
1
199
9
/
0
5
/
25
1
6
:
5
3
:
0
9
jj
Exp
$
*
etrap
.
S
:
Preparing
for
entry
into
the
kernel
on
Sparc
V9
.
*
*
Copyright
(
C
)
1996
,
1997
David
S
.
Miller
(
davem
@
caip
.
rutgers
.
edu
)
*
Copyright
(
C
)
1997
,
1998
Jakub
Jelinek
(
jj
@
sunsite
.
mff
.
cuni
.
cz
)
*
Copyright
(
C
)
1997
,
1998
,
1999
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*/
#include <asm/asi.h>
...
...
@@ -59,10 +59,9 @@ etrap_irq: rdpr %tstate, %g1 ! Single Group
stb
%
l5
,
[%
l6
+
AOFF_task_tss
+
AOFF_thread_fpdepth
]
!
Store
wrpr
%
g3
,
0
,
%
otherwin
!
Single
Group
+
4
bubbles
wrpr
%
g2
,
0
,
%
wstate
!
Single
Group
+
4
bubbles
ldxa
[%
l4
]
ASI_DMMU
,
%
g2
!
Load
Group
stxa
%
g0
,
[%
l4
]
ASI_DMMU
!
Store
Group
stxa
%
g2
,
[%
l4
+
%
l4
]
ASI_DMMU
!
Store
Group
flush
%
l6
!
Single
Group
+
9
bubbles
wr
%
g0
,
ASI_AIUS
,
%
asi
!
Single
Group
+
4
bubbles
2
:
wrpr
%
g0
,
0x0
,
%
tl
!
Single
Group
+
4
bubbles
andn
%
g1
,
PSTATE_MM
,
%
l1
!
IEU0
Group
mov
%
g4
,
%
l4
!
IEU1
...
...
@@ -135,10 +134,9 @@ scetrap: rdpr %pil, %g2 ! Single Group
sll
%
g2
,
3
,
%
g2
!
IEU0
Group
wrpr
%
g3
,
0
,
%
otherwin
!
Single
Group
+
4
bubbles
wrpr
%
g2
,
0
,
%
wstate
!
Single
Group
+
4
bubbles
ldxa
[%
l4
]
ASI_DMMU
,
%
g2
!
Load
Group
stxa
%
g0
,
[%
l4
]
ASI_DMMU
!
Store
Group
stxa
%
g2
,
[%
l4
+
%
l4
]
ASI_DMMU
!
Store
Group
flush
%
l6
!
Single
Group
+
9
bubbles
wr
%
g0
,
ASI_AIUS
,
%
asi
!
Single
Group
+
4
bubbles
2
:
wrpr
%
g0
,
0x0
,
%
tl
!
Single
Group
+
4
bubbles
andn
%
g1
,
PSTATE_MM
,
%
l1
!
IEU0
Group
mov
%
g4
,
%
l4
!
IEU1
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/head.S
View file @
21d0c0d1
/*
$Id
:
head
.
S
,
v
1
.6
0
1999
/
0
4
/
12
08
:
08
:
21
davem
Exp
$
/*
$Id
:
head
.
S
,
v
1
.6
1
1999
/
0
5
/
25
16
:
53
:
10
jj
Exp
$
*
head
.
S
:
Initial
boot
code
for
the
Sparc64
port
of
Linux
.
*
*
Copyright
(
C
)
1996
,
1997
David
S
.
Miller
(
davem
@
caip
.
rutgers
.
edu
)
...
...
@@ -286,6 +286,7 @@ sun4u_init:
wr
%
g6
,
0x0
,
%
pic
#endif
wr
%
g0
,
ASI_P
,
%
asi
mov
1
,
%
g5
sllx
%
g5
,
(
PAGE_SHIFT
+
1
),
%
g5
sub
%
g5
,
(
REGWIN_SZ
+
STACK_BIAS
),
%
g5
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/process.c
View file @
21d0c0d1
/* $Id: process.c,v 1.9
2
1999/05/
08 23:04:48
davem Exp $
/* $Id: process.c,v 1.9
4
1999/05/
27 04:49:30
davem Exp $
* arch/sparc64/kernel/process.c
*
* Copyright (C) 1995, 1996 David S. Miller (davem@caip.rutgers.edu)
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/rtrap.S
View file @
21d0c0d1
/*
$Id
:
rtrap
.
S
,
v
1
.4
5
199
8
/
11
/
09
15
:
33
:
29
davem
Exp
$
/*
$Id
:
rtrap
.
S
,
v
1
.4
6
199
9
/
05
/
25
16
:
53
:
20
jj
Exp
$
*
rtrap
.
S
:
Preparing
for
return
from
trap
on
Sparc
V9
.
*
*
Copyright
(
C
)
1997
,
1998
Jakub
Jelinek
(
jj
@
sunsite
.
mff
.
cuni
.
cz
)
...
...
@@ -106,7 +106,6 @@ rt_continue: lduh [%g6 + AOFF_task_tss + AOFF_thread_ctx], %l0
brnz
,
pn
%
l3
,
kern_rtt
mov
PRIMARY_CONTEXT
,
%
l7
stxa
%
l0
,
[%
l7
]
ASI_DMMU
stxa
%
l0
,
[%
l7
+
%
l7
]
ASI_DMMU
flush
%
o5
rdpr
%
wstate
,
%
l1
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/smp.c
View file @
21d0c0d1
...
...
@@ -272,25 +272,26 @@ __initfunc(void smp_boot_cpus(void))
static
inline
void
xcall_deliver
(
u64
data0
,
u64
data1
,
u64
data2
,
u64
pstate
,
unsigned
long
cpu
)
{
u64
result
,
target
=
(
cpu
<<
14
)
|
0x70
;
int
stuck
;
int
stuck
,
tmp
;
#ifdef XCALL_DEBUG
printk
(
"CPU[%d]: xcall(data[%016lx:%016lx:%016lx],tgt[%016lx])
\n
"
,
smp_processor_id
(),
data0
,
data1
,
data2
,
target
);
#endif
again:
tmp
=
0x40
;
__asm__
__volatile__
(
"
wrpr %
0
, %
1
, %%pstate
wr %%g0, %2, %%asi
stxa %
3
, [
0x40] %%asi
stxa
%
4
,
[0x50] %%asi
stxa %
5
, [
0x60] %%asi
wrpr %
1
, %
2
, %%pstate
stxa %4, [%0] %3
stxa %
5
, [
%0+%8] %3
add
%
0
,
%8, %0
stxa %
6
, [
%0+%8] %3
membar #Sync
stxa %%g0, [%
6
] %
%asi
stxa %%g0, [%
7
] %
3
membar #Sync"
:
/* No outputs */
:
"=r"
(
tmp
)
:
"r"
(
pstate
),
"i"
(
PSTATE_IE
),
"i"
(
ASI_UDB_INTR_W
),
"r"
(
data0
),
"r"
(
data1
),
"r"
(
data2
),
"r"
(
target
));
"r"
(
data0
),
"r"
(
data1
),
"r"
(
data2
),
"r"
(
target
)
,
"r"
(
0x10
),
"0"
(
tmp
)
);
/* NOTE: PSTATE_IE is still clear. */
stuck
=
100000
;
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/trampoline.S
View file @
21d0c0d1
/*
$Id
:
trampoline
.
S
,
v
1
.
8
199
8
/
12
/
09
21
:
01
:
15
davem
Exp
$
/*
$Id
:
trampoline
.
S
,
v
1
.
9
199
9
/
05
/
25
16
:
53
:
12
jj
Exp
$
*
trampoline
.
S
:
Jump
start
slave
processors
on
sparc64
.
*
*
Copyright
(
C
)
1997
David
S
.
Miller
(
davem
@
caip
.
rutgers
.
edu
)
...
...
@@ -130,6 +130,8 @@ sparc64_cpu_startup:
nop
bounce
:
wr
%
g0
,
ASI_P
,
%
asi
mov
PRIMARY_CONTEXT
,
%
g7
stxa
%
g0
,
[%
g7
]
ASI_DMMU
membar
#
Sync
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/traps.c
View file @
21d0c0d1
/* $Id: traps.c,v 1.5
8
1999/0
3/29 12:38
:10 jj Exp $
/* $Id: traps.c,v 1.5
9
1999/0
5/18 16:57
:10 jj Exp $
* arch/sparc64/kernel/traps.c
*
* Copyright (C) 1995,1997 David S. Miller (davem@caip.rutgers.edu)
...
...
@@ -452,15 +452,35 @@ void instruction_dump (unsigned int *pc)
if
((((
unsigned
long
)
pc
)
&
3
))
return
;
printk
(
"Instruction DUMP:"
);
for
(
i
=
-
3
;
i
<
6
;
i
++
)
printk
(
"%c%08x%c"
,
i
?
' '
:
'<'
,
pc
[
i
],
i
?
' '
:
'>'
);
printk
(
"
\n
"
);
}
void
user_instruction_dump
(
unsigned
int
*
pc
)
{
int
i
;
unsigned
int
buf
[
9
];
if
((((
unsigned
long
)
pc
)
&
3
))
return
;
if
(
copy_from_user
(
buf
,
pc
-
3
,
sizeof
(
buf
)))
return
;
printk
(
"Instruction DUMP:"
);
for
(
i
=
0
;
i
<
9
;
i
++
)
printk
(
"%c%08x%c"
,
i
==
3
?
' '
:
'<'
,
buf
[
i
],
i
==
3
?
' '
:
'>'
);
printk
(
"
\n
"
);
}
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
{
extern
void
__show_regs
(
struct
pt_regs
*
regs
);
extern
void
smp_report_regs
(
void
);
int
count
=
0
;
struct
reg_window
*
lastrw
;
/* Amuse the user. */
printk
(
...
...
@@ -472,25 +492,28 @@ void die_if_kernel(char *str, struct pt_regs *regs)
printk
(
"%s(%d): %s
\n
"
,
current
->
comm
,
current
->
pid
,
str
);
__asm__
__volatile__
(
"flushw"
);
__show_regs
(
regs
);
{
if
(
regs
->
tstate
&
TSTATE_PRIV
)
{
struct
reg_window
*
rw
=
(
struct
reg_window
*
)
(
regs
->
u_regs
[
UREG_FP
]
+
STACK_BIAS
);
/* Stop the back trace when we hit userland or we
* find some badly aligned kernel stack.
*/
lastrw
=
(
struct
reg_window
*
)
current
;
while
(
rw
&&
(((
unsigned
long
)
rw
)
>=
PAGE_OFFSET
)
&&
count
++
<
30
&&
rw
>=
lastrw
&&
(
char
*
)
rw
<
((
char
*
)
current
)
+
sizeof
(
union
task_union
)
&&
!
(((
unsigned
long
)
rw
)
&
0x7
))
{
printk
(
"Caller[%016lx]
\n
"
,
rw
->
ins
[
7
]);
lastrw
=
rw
;
rw
=
(
struct
reg_window
*
)
(
rw
->
ins
[
6
]
+
STACK_BIAS
);
}
}
if
(
regs
->
tstate
&
TSTATE_PRIV
)
{
printk
(
"Instruction DUMP:"
);
instruction_dump
((
unsigned
int
*
)
regs
->
tpc
);
}
}
else
user_instruction_dump
((
unsigned
int
*
)
regs
->
tpc
);
#ifdef __SMP__
smp_report_regs
();
#endif
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/unaligned.c
View file @
21d0c0d1
/* $Id: unaligned.c,v 1.1
5
1999/0
4/03 11:36:21 anton
Exp $
/* $Id: unaligned.c,v 1.1
6
1999/0
5/25 16:53:15 jj
Exp $
* unaligned.c: Unaligned load/store trap handling with special
* cases for the kernel to do them more quickly.
*
...
...
@@ -228,7 +228,8 @@ __asm__ __volatile__ ( \
"sra %%g7, 0, %%g7\n\t" \
"stx %%l1, [%0]\n\t" \
"stx %%g7, [%0 + 8]\n" \
"0:\n\n\t" \
"0:\n\t" \
"wr %%g0, %5, %%asi\n\n\t" \
".section __ex_table\n\t" \
".word 4b, " #errh "\n\t" \
".word 5b, " #errh "\n\t" \
...
...
@@ -244,7 +245,8 @@ __asm__ __volatile__ ( \
".word 15b, " #errh "\n\t" \
".word 16b, " #errh "\n\n\t" \
".previous\n\t" \
: : "r" (dest_reg), "r" (size), "r" (saddr), "r" (is_signed), "r" (asi) \
: : "r" (dest_reg), "r" (size), "r" (saddr), "r" (is_signed), \
"r" (asi), "i" (ASI_AIUS) \
: "l1", "l2", "g7", "g1", "cc"); \
})
...
...
@@ -282,7 +284,8 @@ __asm__ __volatile__ ( \
"2:\t" "srl %%l1, 8, %%l2\n" \
"16:\t" "stba %%l2, [%0] %%asi\n" \
"17:\t" "stba %%l1, [%0 + 1] %%asi\n" \
"0:\n\n\t" \
"0:\n\t" \
"wr %%g0, %4, %%asi\n\n\t" \
".section __ex_table\n\t" \
".word 4b, " #errh "\n\t" \
".word 5b, " #errh "\n\t" \
...
...
@@ -299,7 +302,7 @@ __asm__ __volatile__ ( \
".word 16b, " #errh "\n\t" \
".word 17b, " #errh "\n\n\t" \
".previous\n\t" \
: : "r" (dst_addr), "r" (size), "r" (src_val), "r" (asi)
\
: : "r" (dst_addr), "r" (size), "r" (src_val), "r" (asi)
, "i" (ASI_AIUS)
\
: "l1", "l2", "g7", "g1", "cc"); \
})
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/lib/VIS.h
View file @
21d0c0d1
/* $Id: VIS.h,v 1.
3
199
7
/0
6
/2
7
1
4
:5
3:18
jj Exp $
/* $Id: VIS.h,v 1.
4
199
9
/0
5
/2
5
1
6
:5
2:50
jj Exp $
* VIS.h: High speed copy/clear operations utilizing the UltraSparc
* Visual Instruction Set.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
* Copyright (C) 1996, 1997 Jakub Jelinek (jj@
sunsite.mff.cuni
.cz)
* Copyright (C) 1996, 1997
, 1999
Jakub Jelinek (jj@
ultra.linux
.cz)
*/
/* VIS code can be used for numerous copy/set operation variants.
...
...
@@ -28,6 +28,8 @@
#include <asm/head.h>
#include <asm/asi.h>
#else
#define ASI_AIUS 0x11
/* Secondary, user */
#define ASI_BLK_AIUS 0x71
/* Secondary, user, blk ld/st */
#define ASI_P 0x80
/* Primary, implicit */
#define ASI_S 0x81
/* Secondary, implicit */
#define ASI_BLK_COMMIT_P 0xe0
/* Primary, blk store commit */
...
...
@@ -43,15 +45,28 @@
* cell exchange program...
*/
#define ASI_BLK_XOR (ASI_P ^ ASI_BLK_P)
/* Well, things get more hairy if we use ASI_AIUS as
* USER_DS and ASI_P as KERNEL_DS, we'd reach
* commit block stores this way which is not what we want...
*/
/* ASI_P->ASI_BLK_P && ASI_AIUS->ASI_BLK_AIUS transitions can be done
* as blkasi = asi | ASI_BLK_OR
*/
#define ASI_BLK_OR (ASI_BLK_P & ~ASI_P)
/* Transition back from ASI_BLK_P->ASI_P && ASI_BLK_AIUS->ASI_AIUS is
* more complicated:
* asi = blkasi ^ (blkasi >> 3) ^ ASI_BLK_XOR1
*/
#define ASI_BLK_XOR1 (ASI_BLK_P ^ (ASI_BLK_P >> 3) ^ ASI_P)
#define asi_src %o3
#define asi_dest %o4
#ifdef __KERNEL__
#define ASI_SETSRC_BLK wr asi_src, 0, %asi;
#define ASI_SETSRC_NOBLK wr asi_src,
ASI_BLK_XOR
, %asi;
#define ASI_SETSRC_NOBLK wr asi_src,
0
, %asi;
#define ASI_SETDST_BLK wr asi_dest, 0, %asi;
#define ASI_SETDST_NOBLK wr asi_dest,
ASI_BLK_XOR
, %asi;
#define ASI_SETDST_NOBLK wr asi_dest,
0
, %asi;
#define ASIBLK %asi
#define ASINORMAL %asi
#define LDUB lduba
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/lib/VISbzero.S
View file @
21d0c0d1
/*
$Id
:
VISbzero
.
S
,
v
1
.
9
199
8
/
0
6
/
12
1
4
:
5
3
:
5
0
jj
Exp
$
/*
$Id
:
VISbzero
.
S
,
v
1
.
10
199
9
/
0
5
/
25
1
6
:
5
2
:
5
6
jj
Exp
$
*
VISbzero
.
S
:
High
speed
clear
operations
utilizing
the
UltraSparc
*
Visual
Instruction
Set
.
*
*
Copyright
(
C
)
1997
David
S
.
Miller
(
davem
@
caip
.
rutgers
.
edu
)
*
Copyright
(
C
)
1996
,
1997
Jakub
Jelinek
(
jj
@
sunsite
.
mff
.
cuni
.
cz
)
*
Copyright
(
C
)
1996
,
1997
,
1999
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*/
#include "VIS.h"
...
...
@@ -84,9 +84,14 @@
.
align
32
#ifdef __KERNEL__
.
globl
__bzero
,
__bzero_noasi
__bzero_noasi
:
rd
%
asi
,
%
g5
ba
,
pt
%
xcc
,
__bzero
+
12
mov
%
g5
,
%
o4
__bzero
:
rd
%
asi
,
%
g5
wr
%
g0
,
ASI_P
,
%
asi
!
LSU
Group
__bzero_noasi
:
mov
ASI_P
,
%
o4
#else
.
globl
bzero
bzero_private
:
...
...
@@ -143,8 +148,8 @@ bzero:
6
:
andncc
%
o1
,
0x3f
,
%
o3
7
:
be
,
pn
%
xcc
,
9
f
#ifdef __KERNEL__
r
d
%
asi
,
%
o4
wr
%
o4
,
ASI_BLK_XOR
,
%
asi
o
r
%
o4
,
ASI_BLK_OR
,
%
g7
wr
%
g7
,
%
g0
,
%
asi
VISEntryHalf
#else
wr
%
g0
,
ASI_BLK_P
,
%
asi
...
...
@@ -221,7 +226,11 @@ bzero:
add
%
o0
,
2
,
%
o0
1
:
bne
,
a
,
pn
%
xcc
,
8
f
EX
(
STB
%
g0
,
[%
o0
]
ASINORMAL
,
add
%
g0
,
1
)
8
:
retl
8
:
#ifdef __KERNEL__
wr
%
g5
,
%
g0
,
%
asi
#endif
retl
RETL
17
:
be
,
pn
%
xcc
,
13
b
orcc
%
o1
,
0
,
%
g0
...
...
@@ -230,7 +239,11 @@ bzero:
subcc
%
o1
,
1
,
%
o1
bne
,
pt
%
xcc
,
8
b
EX
(
STB
%
g0
,
[%
o0
-
1
]
ASINORMAL
,
add
%
o1
,
1
)
0
:
retl
0
:
#ifdef __KERNEL__
wr
%
g5
,
%
g0
,
%
asi
#endif
retl
RETL
#ifdef __KERNEL__
...
...
@@ -239,6 +252,7 @@ bzero:
VISbzerofixup_reto1
:
mov
%
o1
,
%
o0
VISbzerofixup_ret0
:
wr
%
g5
,
%
g0
,
%
asi
retl
wr
%
g0
,
0
,
%
fprs
VISbzerofixup_ret1
:
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/lib/VIScopy.S
View file @
21d0c0d1
/*
$Id
:
VIScopy
.
S
,
v
1
.
19
1998
/
10
/
19
21
:
52
:
19
davem
Exp
$
/*
$Id
:
VIScopy
.
S
,
v
1
.
20
1999
/
05
/
25
16
:
52
:
57
jj
Exp
$
*
VIScopy
.
S
:
High
speed
copy
operations
utilizing
the
UltraSparc
*
Visual
Instruction
Set
.
*
*
Copyright
(
C
)
1997
David
S
.
Miller
(
davem
@
caip
.
rutgers
.
edu
)
*
Copyright
(
C
)
1996
,
1997
,
1998
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*
Copyright
(
C
)
1996
,
1997
,
1998
,
1999
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*/
#include "VIS.h"
...
...
@@ -26,18 +26,25 @@
#ifdef __KERNEL__
#include <asm/visasm.h>
#include <asm/asm_offsets.h>
#define FPU_CLEAN_RETL \
VISExit
\
retl
; \
clr
%
o0
;
#define FPU_RETL \
VISExit
\
retl
; \
clr
%
o0
;
#define NORMAL_RETL \
retl
; \
clr
%
o0
;
#define FPU_CLEAN_RETL \
ldub
[%
g6
+
AOFF_task_tss
+
AOFF_thread_current_ds
],
%
o1
; \
VISExit
\
clr
%
o0
; \
retl
; \
wr
%
o1
,
%
g0
,
%
asi
;
#define FPU_RETL \
ldub
[%
g6
+
AOFF_task_tss
+
AOFF_thread_current_ds
],
%
o1
; \
VISExit
\
clr
%
o0
; \
retl
; \
wr
%
o1
,
%
g0
,
%
asi
;
#define NORMAL_RETL \
ldub
[%
g6
+
AOFF_task_tss
+
AOFF_thread_current_ds
],
%
o1
; \
clr
%
o0
; \
retl
; \
wr
%
o1
,
%
g0
,
%
asi
;
#define EX(x,y,a,b) \
98
:
x
,
y
; \
.
section
.
fixup
; \
...
...
@@ -146,10 +153,20 @@
EXVIS
(
STBLK
%
fsrc
,
[%
dest
]
ASIBLK
)
; \
add
%
dest
,
0x40
,
%
dest
;
#ifdef __KERNEL__
#define STORE_JUMP(dest, fsrc, target) \
srl
asi_dest
,
3
,
%
g5
; \
EXVIS3
(
STBLK
%
fsrc
,
[%
dest
]
ASIBLK
)
; \
xor
asi_dest
,
ASI_BLK_XOR1
,
asi_dest
;\
add
%
dest
,
0x40
,
%
dest
; \
xor
asi_dest
,
%
g5
,
asi_dest
; \
ba
,
pt
%
xcc
,
target
;
#else
#define STORE_JUMP(dest, fsrc, target) \
EXVIS3
(
STBLK
%
fsrc
,
[%
dest
]
ASIBLK
)
; \
add
%
dest
,
0x40
,
%
dest
; \
ba
,
pt
%
xcc
,
target
;
#endif
#ifndef __KERNEL__
#define VISLOOP_PAD nop; nop; nop; nop; \
...
...
@@ -157,9 +174,7 @@
nop
; nop; nop; nop; \
nop
; nop; nop;
#else
#define VISLOOP_PAD nop; nop; nop; nop; \
nop
; nop; nop; nop; \
nop
;
#define VISLOOP_PAD
#endif
#define FINISH_VISCHUNK(dest, f0, f1, left) \
...
...
@@ -170,11 +185,13 @@
EXVIS4
(
STDF
%f48
,
[%
dest
]
ASINORMAL
)
; \
add
%
dest
,
8
,
%
dest
;
#define UNEVEN_VISCHUNK(dest, f0, f1, left)
\
#define UNEVEN_VISCHUNK
_LAST
(dest, f0, f1, left) \
subcc
%
left
,
8
,
%
left
; \
bl
,
pn
%
xcc
,
vis_out
; \
fsrc1
%f0
,
%f1
; \
ba
,
a
,
pt
%
xcc
,
vis_slk
;
fsrc1
%f0
,
%f1
;
#define UNEVEN_VISCHUNK(dest, f0, f1, left) \
UNEVEN_VISCHUNK_LAST
(
dest
,
f0
,
f1
,
left
)
\
ba
,
a
,
pt
%
xcc
,
vis_out_slk
;
/
*
Macros
for
non
-
VIS
memcpy
code
.
*/
#ifdef REGS_64BIT
...
...
@@ -303,32 +320,32 @@
.
type
__memcpy_entry
,
@
function
memcpy_private
:
__memcpy
:
memcpy
:
mov
ASI_
BLK_
P
,
asi_src
!
IEU0
Group
memcpy
:
mov
ASI_P
,
asi_src
!
IEU0
Group
brnz
,
pt
%
o2
,
__memcpy_entry
!
CTI
mov
ASI_
BLK_
P
,
asi_dest
!
IEU1
mov
ASI_P
,
asi_dest
!
IEU1
retl
clr
%
o0
.
align
32
.
globl
__copy_from_user
.
type
__copy_from_user
,
@
function
__copy_from_user
:
mov
ASI_BLK_S
,
asi_src
!
IEU0
Group
__copy_from_user
:
rd
%
asi
,
asi_src
!
IEU0
Group
brnz
,
pt
%
o2
,
__memcpy_entry
!
CTI
mov
ASI_
BLK_
P
,
asi_dest
!
IEU1
mov
ASI_P
,
asi_dest
!
IEU1
.
globl
__copy_to_user
.
type
__copy_to_user
,
@
function
__copy_to_user
:
mov
ASI_
BLK_
P
,
asi_src
!
IEU0
Group
__copy_to_user
:
mov
ASI_P
,
asi_src
!
IEU0
Group
brnz
,
pt
%
o2
,
__memcpy_entry
!
CTI
mov
ASI_BLK_S
,
asi_dest
!
IEU1
rd
%
asi
,
asi_dest
!
IEU1
retl
!
CTI
Group
clr
%
o0
!
IEU0
Group
.
globl
__copy_in_user
.
type
__copy_in_user
,
@
function
__copy_in_user
:
mov
ASI_BLK_S
,
asi_src
!
IEU0
Group
__copy_in_user
:
rd
%
asi
,
asi_src
!
IEU0
Group
brnz
,
pt
%
o2
,
__memcpy_entry
!
CTI
mov
ASI_BLK_S
,
asi_dest
!
IEU1
mov
asi_src
,
asi_dest
!
IEU1
retl
!
CTI
Group
clr
%
o0
!
IEU0
Group
#endif
...
...
@@ -446,6 +463,10 @@ dest_is_64byte_aligned:
fmovd
%f0
,
%f2
!
FPU
sub
%
g3
,
0x10
,
%
g3
!
IEU0
Group
sub
%
o2
,
%
g7
,
%
o2
!
IEU1
#ifdef __KERNEL__
or
asi_src
,
ASI_BLK_OR
,
asi_src
!
IEU0
Group
or
asi_dest
,
ASI_BLK_OR
,
asi_dest
!
IEU1
#endif
alignaddr
%
g1
,
%
g0
,
%
g0
!
GRU
Group
add
%
g1
,
%
g7
,
%
g1
!
IEU0
Group
subcc
%
o2
,
%
g3
,
%
o2
!
IEU1
...
...
@@ -584,7 +605,13 @@ finish_f38: FINISH_VISCHUNK(o0, f38, f40, g3)
finish_f40
:
FINISH_VISCHUNK
(
o0
,
f40
,
f42
,
g3
)
finish_f42
:
FINISH_VISCHUNK
(
o0
,
f42
,
f44
,
g3
)
finish_f44
:
FINISH_VISCHUNK
(
o0
,
f44
,
f46
,
g3
)
finish_f46
:
UNEVEN_VISCHUNK
(
o0
,
f46
,
f0
,
g3
)
finish_f46
:
UNEVEN_VISCHUNK_LAST
(
o0
,
f46
,
f0
,
g3
)
vis_out_slk
:
#ifdef __KERNEL__
srl
asi_src
,
3
,
%
g5
!
IEU0
Group
xor
asi_src
,
ASI_BLK_XOR1
,
asi_src
!
IEU1
xor
asi_src
,
%
g5
,
asi_src
!
IEU0
Group
#endif
vis_slk
:
ASI_SETSRC_NOBLK
!
LSU
Group
EXVIS4
(
LDDF
[%
o1
]
ASINORMAL
,
%f2
)
!
Load
Group
add
%
o1
,
8
,
%
o1
!
IEU0
...
...
@@ -592,7 +619,7 @@ vis_slk:ASI_SETSRC_NOBLK ! LSU Group
ASI_SETDST_NOBLK
!
LSU
Group
faligndata
%f0
,
%f2
,
%f8
!
GRU
Group
EXVIS5
(
STDF
%f8
,
[%
o0
]
ASINORMAL
)
!
Store
bl
,
pn
%
xcc
,
vis_out
!
CTI
bl
,
pn
%
xcc
,
vis_out
_slp
!
CTI
add
%
o0
,
8
,
%
o0
!
IEU0
Group
ASI_SETSRC_NOBLK
!
LSU
Group
EXVIS4
(
LDDF
[%
o1
]
ASINORMAL
,
%f0
)
!
Load
Group
...
...
@@ -603,8 +630,20 @@ vis_slk:ASI_SETSRC_NOBLK ! LSU Group
EXVIS5
(
STDF
%f8
,
[%
o0
]
ASINORMAL
)
!
Store
bge
,
pt
%
xcc
,
vis_slk
!
CTI
add
%
o0
,
8
,
%
o0
!
IEU0
Group
vis_out_slp
:
#ifdef __KERNEL__
brz
,
pt
%
o2
,
vis_ret
!
CTI
Group
mov
%
g1
,
%
o1
!
IEU0
ba
,
pt
%
xcc
,
vis_slp
+
4
!
CTI
Group
ASI_SETSRC_NOBLK
!
LSU
Group
#endif
vis_out
:
brz
,
pt
%
o2
,
vis_ret
!
CTI
Group
mov
%
g1
,
%
o1
!
IEU0
#ifdef __KERNEL__
srl
asi_src
,
3
,
%
g5
!
IEU0
Group
xor
asi_src
,
ASI_BLK_XOR1
,
asi_src
!
IEU1
xor
asi_src
,
%
g5
,
asi_src
!
IEU0
Group
#endif
vis_slp
:
ASI_SETSRC_NOBLK
!
LSU
Group
EXO2
(
LDUB
[%
o1
]
ASINORMAL
,
%
g5
)
!
LOAD
add
%
o1
,
1
,
%
o1
!
IEU0
...
...
@@ -970,11 +1009,13 @@ VIScopyfixup_ret:
/
*
If
this
is
copy_from_user
(),
zero
out
the
rest
of
the
*
kernel
buffer
.
*/
ldub
[%
g6
+
AOFF_task_tss
+
AOFF_thread_current_ds
],
%
o4
andcc
asi_src
,
0x1
,
%
g0
be
,
pt
%
icc
,
1
f
andcc
asi_dest
,
0x1
,
%
g0
bne
,
pn
%
icc
,
1
f
VISExit
andcc
asi_dest
,
0x1
,
%
g0
bne
,
pn
%
icc
,
1
f
nop
save
%
sp
,
-
160
,
%
sp
mov
%
i0
,
%
o0
call
__bzero
...
...
@@ -982,7 +1023,7 @@ VIScopyfixup_ret:
restore
1
:
mov
%
o1
,
%
o0
retl
nop
wr
%
o4
,
%
g0
,
%
asi
VIScopyfixup1
:
subcc
%
g2
,
18
,
%
g2
add
%
o0
,
32
,
%
o0
bgeu
,
a
,
pt
%
icc
,
VIScopyfixup1
...
...
This diff is collapsed.
Click to expand it.
arch/sparc64/lib/VIScsum.S
View file @
21d0c0d1
/*
$Id
:
VIScsum
.
S
,
v
1
.
3
199
8
/
0
6
/
12
1
4
:
53
:
57
jj
Exp
$
/*
$Id
:
VIScsum
.
S
,
v
1
.
4
199
9
/
0
5
/
25
1
6
:
53
:
00
jj
Exp
$
*
VIScsum
.
S
:
High
bandwidth
IP
checksumming
utilizing
the
UltraSparc
*
Visual
Instruction
Set
.
*
...
...
@@ -27,6 +27,7 @@
#include <asm/head.h>
#include <asm/asi.h>
#include <asm/visasm.h>
#include <asm/asm_offsets.h>
#else
#define ASI_BLK_P 0xf0
#define FRPS_FEF 0x04
...
...
@@ -339,9 +340,13 @@ csum_partial:
membar
#
Sync
/*
LSU
Group
*/
DO_THE_TRICK
(
f44
,
f46
,
f48
,
f50
,
f52
,
f54
,
f56
,
f58
,
f60
,
f62
,
f0
,
f2
,
f4
,
f6
,
f8
,
f10
,
f12
,
f14
)
END_THE_TRICK
(
f60
,
f62
,
f0
,
f2
,
f4
,
f6
,
f8
,
f10
,
f12
,
f14
,
f16
,
f18
,
f20
,
f22
,
f24
,
f26
,
f28
,
f30
)
#ifdef __KERNEL__
ldub
[%
g6
+
AOFF_task_tss
+
AOFF_thread_current_ds
],
%
g7
#endif
and
%
o1
,
0x3f
,
%
o1
/*
IEU0
Group
*/
#ifdef __KERNEL__
VISExit
wr
%
g7
,
%
g0
,
%
asi
#endif
20
:
andcc
%
o1
,
0xf0
,
%
g1
/*
IEU1
Group
*/
be
,
pn
%
icc
,
23
f
/*
CTI
*/
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
3
4
5
…
8
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment