Commit 57b1dfbd authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Linus Torvalds

[PATCH] PA-RISC updates

Some misc updates:
 - adapt our config.in changes to arch/parisc/Kconfig
 - general Makefile updaes for the new build system
 - remove asm-parisc/gsc.h in favour of asm-parisc/io.h
 - Alan-approved fix for the loff_t problem
 - Define POLLREMOVE like other architectures.
 - irq handling updates from Grant Grundler
parent 9dbad95a
......@@ -3,15 +3,16 @@
# see the Configure script.
#
mainmenu "Linux Kernel Configuration"
mainmenu "Linux/PA-RISC Kernel Configuration"
config PARISC
bool
default y
help
The PA-RISC microprocessor is a RISC chip designed by
Hewlett-Packard and used in their line of workstations. The PA-RISC
Linux project has a home page at <www.parisc-linux.org>.
The PA-RISC microprocessor is designed by Hewlett-Packard and used
in many of their workstations & servers (HP9000 700 and 800 series,
and later HP3000 series). The PA-RISC Linux project home page is
at <http://www.parisc-linux.org/>.
config UID16
bool
......@@ -25,16 +26,72 @@ config RWSEM_XCHGADD_ALGORITHM
config GENERIC_ISA_DMA
bool
default y
# unless you want to implement ACPI on PA-RISC ... ;-)
config PM
bool
source "init/Kconfig"
menu "General options"
menu "Processor type and features"
# bool 'Symmetric multi-processing support' CONFIG_SMP
config SMP
choice
prompt "Processor type"
default PA7000
config PA7000
bool "PA7000/PA7100"
---help---
This is the processor type of your CPU. This information is used for
optimizing purposes. In order to compile a kernel that can run on
all PA CPUs (albeit not optimally fast), you can specify "PA7000"
here.
Specifying "PA8000" here will allow you to select a 64-bit kernel
which is required on some machines.
config PA7100LC
bool "PA7100LC/PA7300LC"
help
Select this option for a 7100LC or 7300LC processor, as used
in the 712, 715/Mirage, A180, B132, C160L and some other machines.
config PA7200
bool "PA7200"
help
Select this option for the PCX-T' processor, as used in C110, D100
and similar machines.
config PA8X00
bool "PA8000 and up"
help
Select this option for PCX-U to PCX-W2 processors.
endchoice
# Define implied options from the CPU selection here
config PA20
bool
depends on PA8X00
default y
config PA11
bool
depends on PA7000 || PA7100LC || PA7200
default y
config PARISC64
bool "64-bit kernel"
depends on PA8X00
config PDC_NARROW
bool "32-bit firmware"
depends on PARISC64
config SMP
bool "Symmetric multi-processing support"
---help---
This enables support for systems with more than one CPU. If you have
a system with only one CPU, like most personal computers, say N. If
......@@ -46,97 +103,36 @@ config SMP
singleprocessor machines. On a singleprocessor machine, the kernel
will run faster if you say N here.
Note that if you say Y here and choose architecture "586" or
"Pentium" under "Processor family", the kernel will not work on 486
architectures. Similarly, multiprocessor kernels for the "PPro"
architecture may not work on all Pentium based boards.
People using multiprocessor machines who say Y here should also say
Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
Management" code will be disabled if you say Y here.
See also the <file:Documentation/smp.tex>,
<file:Documentation/smp.txt>, <file:Documentation/i386/IO-APIC.txt>,
<file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
<file:Documentation/smp.txt>, <file:Documentation/nmi_watchdog.txt>
and the SMP-HOWTO available at
<http://www.linuxdoc.org/docs.html#howto>.
If you don't know what to do here, say N.
config PREEMPT
bool
# bool "Preemptible Kernel"
default n
config NR_CPUS
int "Maximum number of CPUs (2-32)"
depends on SMP
default "32"
config KWDB
bool "Kernel Debugger support"
help
Include in-kernel hooks for kdb, the source level debugger for the
PA-RISC port.
# define_bool CONFIG_KWDB n
# bool 'GSC/Gecko bus support' CONFIG_GSC y
config GSC
bool
default y
endmenu
config IOMMU_CCIO
bool "U2/Uturn I/O MMU"
help
Say Y here to enable DMA management routines for the first
generation of PA-RISC cache-coherent machines. Programs the
U2/Uturn chip in "Virtual Mode" and use the I/O MMU.
config GSC_LASI
bool "LASI I/O support"
help
Say Y here to directly support the LASI controller chip found on
PA-RISC workstations. Linux-oriented documentation for this chip
can be found at <http://www.parisc-linux.org/documentation/>.
source "drivers/parisc/Kconfig"
config PCI
bool "PCI support"
help
Find out whether you have a PCI motherboard. PCI is the name of a
bus system, i.e. the way the CPU talks to the other stuff inside
your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
VESA. If you have PCI, say Y, otherwise N.
The PCI-HOWTO, available from
<http://www.linuxdoc.org/docs.html#howto>, contains valuable
information about which PCI hardware does work under Linux and which
doesn't.
config GSC_DINO
bool "GSCtoPCI/DINO PCI support"
depends on PCI
config PCI_LBA
bool "LBA/Elroy PCI support"
depends on PCI
help
Say Y here to give the PA-RISC kernel access to PCI configuration
and IO-port space on PA-RISC workstations equipped with a Lower Bus
Adapter (LBA). This includes A, B, C, J, L, and N-class machines
with 4-digit model numbers, also the A300.
config IOSAPIC
bool
depends on PCI_LBA
default y
menu "Executable file formats"
config IOMMU_SBA
config KCORE_ELF
bool
depends on PCI_LBA
depends on PROC_FS
default y
#
# if [ "$CONFIG_PCI_EPIC" = "y" ]; then...
#
endmenu
menu "General setup"
config BINFMT_SOM
tristate "Kernel support for SOM binaries"
help
......@@ -197,117 +193,26 @@ config BINFMT_MISC
you have use for it; the module is called binfmt_misc.o. If you
don't know what to answer at this point, say Y.
config BINFMT_JAVA
tristate "Kernel support for JAVA binaries (obsolete)"
depends on EXPERIMENTAL
help
If you say Y here, the kernel will load and execute Java J-code
binaries directly. Note: this option is obsolete and scheduled for
removal, use CONFIG_BINFMT_MISC instead.
endmenu
##source drivers/parport/Config.in
menu "Parallel port support"
# source "drivers/mtd/Kconfig"
config PARPORT
tristate "Parallel port support"
---help---
If you want to use devices connected to your machine's parallel port
(the connector at the computer with 25 holes), e.g. printer, ZIP
drive, PLIP link (Parallel Line Internet Protocol is mainly used to
create a mini network by connecting the parallel ports of two local
machines) etc., then you need to say Y here; please read
<file:Documentation/parport.txt> and
<file:drivers/parport/BUGS-parport>.
For extensive information about drivers for many devices attaching
to the parallel port see <http://www.torque.net/linux-pp.html> on
the WWW.
It is possible to share a single parallel port among several devices
and it is safe to compile all the corresponding drivers into the
kernel. If you want to compile parallel port support as a module
( = code which can be inserted in and removed from the running
kernel whenever you want), say M here and read
<file:Documentation/modules.txt>. The module will be called
parport.o. If you have more than one parallel port and want to
specify which port and IRQ to be used by this driver at module load
time, take a look at <file:Documentation/parport.txt>.
If unsure, say Y.
config PARPORT_PC
tristate "PC-style hardware"
depends on PCI && PARPORT
---help---
You should say Y here if you have a PC-style parallel port. All IBM
PC compatible computers and some Alphas have PC-style parallel
ports.
source "drivers/parport/Kconfig"
This code is also available as a module. If you want to compile it
as a module ( = code which can be inserted in and removed from the
running kernel whenever you want), say M here and read
<file:Documentation/modules.txt>. The module will be called
parport_pc.o.
# source "drivers/pnp/Kconfig"
If unsure, say Y.
source "drivers/block/Kconfig"
config PARPORT_PC_FIFO
bool "Use FIFO/DMA if available"
depends on PARPORT_PC
help
Many parallel port chipsets provide hardware that can speed up
printing. Say Y here if you want to take advantage of that.
As well as actually having a FIFO, or DMA capability, the kernel
will need to know which IRQ the parallel port has. By default,
parallel port interrupts will not be used, and so neither will the
FIFO. See <file:Documentation/parport.txt> to find out how to
specify which IRQ/DMA to use.
config PARPORT_PC_SUPERIO
bool "SuperIO chipset support (EXPERIMENTAL)"
depends on PARPORT_PC && EXPERIMENTAL
help
Saying Y here enables some probes for Super-IO chipsets in order to
find out things like base addresses, IRQ lines and DMA channels. It
is safe to say N.
menu "ATA/IDE/MFM/RLL support"
depends on SUPERIO
config PARPORT_GSC
tristate "LASI/ASP builtin parallel-port"
depends on GSC_LASI && PARPORT
help
Say Y here to build in low-level parallel-support for PC-style
hardware integrated in the LASI-Controller (on the GSC Bus) for
HP-PARISC workstations.
# If exactly one hardware type is selected then parport will optimise away
# support for loading any others. Defeat this if the user is keen.
config PARPORT_OTHER
bool "Support foreign hardware"
depends on PARPORT
help
Say Y here if you want to be able to load driver modules to support
other non-standard types of parallel ports. This causes a
performance loss, so most people say N.
config IDE
tristate "ATA/IDE/MFM/RLL support"
config PARPORT_1284
bool "IEEE 1284 transfer modes"
depends on PARPORT
help
If you have a printer that supports status readback or device ID, or
want to use a device that uses enhanced parallel port transfer modes
such as EPP and ECP, say Y here to enable advanced IEEE 1284
transfer modes. Also say Y if you want device ID information to
appear in /proc/sys/dev/parport/*/autoprobe*. It is safe to say N.
source "drivers/ide/Kconfig"
endmenu
source "drivers/block/Kconfig"
menu "SCSI support"
config SCSI
......@@ -330,304 +235,20 @@ config SCSI
module if your root file system (the one containing the directory /)
is located on a SCSI device.
comment "SCSI support type (disk, tape, CDrom)"
depends on SCSI
config BLK_DEV_SD
tristate "SCSI disk support"
depends on SCSI
---help---
If you want to use a SCSI hard disk or the SCSI or parallel port
version of the IOMEGA ZIP drive under Linux, say Y and read the
SCSI-HOWTO, the Disk-HOWTO and the Multi-Disk-HOWTO, available from
<http://www.linuxdoc.org/docs.html#howto>. This is NOT for SCSI
CD-ROMs.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called sd_mod.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt> and
<file:Documentation/scsi.txt>. Do not compile this driver as a
module if your root file system (the one containing the directory /)
is located on a SCSI disk. In this case, do not compile the driver
for your SCSI host adapter (below) as a module either.
config SD_EXTRA_DEVS
int "Maximum number of SCSI disks that can be loaded as modules"
depends on BLK_DEV_SD
default "40"
---help---
This controls the amount of additional space allocated in tables for
drivers that are loaded as modules after the kernel is booted. In
the event that the SCSI core itself was loaded as a module, this
value is the number of additional disks that can be loaded after the
first host driver is loaded.
Admittedly this isn't pretty, but there are tons of race conditions
involved with resizing the internal arrays on the fly. Someday this
flag will go away, and everything will work automatically.
If you don't understand what's going on, go with the default.
config CHR_DEV_ST
tristate "SCSI tape support"
depends on SCSI
---help---
If you want to use a SCSI tape drive under Linux, say Y and read the
SCSI-HOWTO, available from
<http://www.linuxdoc.org/docs.html#howto>, and
<file:drivers/scsi/README.st> in the kernel source. This is NOT for
SCSI CD-ROMs.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called st.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt> and
<file:Documentation/scsi.txt>.
config BLK_DEV_SR
tristate "SCSI CDROM support"
depends on SCSI
---help---
If you want to use a SCSI CD-ROM under Linux, say Y and read the
SCSI-HOWTO and the CD-ROM-HOWTO at
<http://www.linuxdoc.org/docs.html#howto>. Also make sure to say Y
or M to "ISO 9660 CD-ROM file system support" later.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called sr_mod.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt> and
<file:Documentation/scsi.txt>.
source drivers/scsi/Kconfig
config BLK_DEV_SR_VENDOR
bool "Enable vendor-specific extensions (for SCSI CDROM)"
depends on BLK_DEV_SR
help
This enables the usage of vendor specific SCSI commands. This is
required to support multisession CDs with old NEC/TOSHIBA cdrom
drives (and HP Writers). If you have such a drive and get the first
session only, try saying Y here; everybody else says N.
config SR_EXTRA_DEVS
int "Maximum number of CDROM devices that can be loaded as modules"
depends on BLK_DEV_SR
default "2"
---help---
This controls the amount of additional space allocated in tables for
drivers that are loaded as modules after the kernel is booted. In
the event that the SCSI core itself was loaded as a module, this
value is the number of additional CD-ROMs that can be loaded after
the first host driver is loaded.
Admittedly this isn't pretty, but there are tons of race conditions
involved with resizing the internal arrays on the fly. Someday this
flag will go away, and everything will work automatically.
If you don't understand what's going on, go with the default.
config CHR_DEV_SG
tristate "SCSI generic support"
depends on SCSI
---help---
If you want to use SCSI scanners, synthesizers or CD-writers or just
about anything having "SCSI" in its name other than hard disks,
CD-ROMs or tapes, say Y here. These won't be supported by the kernel
directly, so you need some additional software which knows how to
talk to these devices using the SCSI protocol:
For scanners, look at SANE (<http://www.mostang.com/sane/>). For CD
writer software look at Cdrtools
(<http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html>)
and for burning a "disk at once": CDRDAO
(<http://cdrdao.sourceforge.net/>). Cdparanoia is a high
quality digital reader of audio CDs (<http://www.xiph.org/paranoia/>).
For other devices, it's possible that you'll have to write the
driver software yourself. Please read the file
<file:Documentation/scsi-generic.txt> for more information.
If you want to compile this as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/modules.txt> and
<file:Documentation/scsi.txt>. The module will be called sg.o. If unsure,
say N.
comment "Some SCSI devices (e.g. CD jukebox) support multiple LUNs"
depends on SCSI
config SCSI_MULTI_LUN
bool "Probe all LUNs on each SCSI device"
depends on SCSI
help
If you have a SCSI device that supports more than one LUN (Logical
Unit Number), e.g. a CD jukebox, and only one LUN is detected, you
can say Y here to force the SCSI driver to probe for multiple LUNs.
A SCSI device with multiple LUNs acts logically like multiple SCSI
devices. The vast majority of SCSI devices have only one LUN, and
so most people can say N here and should in fact do so, because it
is safer.
config SCSI_CONSTANTS
bool "Verbose SCSI error reporting (kernel size +=12K)"
depends on SCSI
help
The error messages regarding your SCSI hardware will be easier to
understand if you say Y here; it will enlarge your kernel by about
12 KB. If in doubt, say Y.
menu "SCSI low-level drivers"
depends on SCSI!=n
config SCSI_LASI
tristate "Lasi SCSI support"
depends on GSC_LASI && SCSI
config SCSI_ZALON
tristate "Zalon SCSI support"
depends on GSC_LASI && SCSI
help
The Zalon is an interface chip that sits between the PA-RISC
processor and the NCR 53c720 SCSI controller on K-series PA-RISC
boards (these are used, among other places, on some HP 780
workstations). Say Y here to make sure it gets initialized
correctly before the Linux kernel tries to talk to the controller.
config SCSI_SYM53C8XX
tristate "SYM53C8XX SCSI support"
depends on PCI && SCSI
---help---
This driver supports all the features of recent 53C8XX chips (used
in PCI SCSI controllers), notably the hardware phase mismatch
feature of the SYM53C896.
Older versions of the 53C8XX chips are not supported by this
driver. If your system uses either a 810 rev. < 16, a 815, or a 825
rev. < 16 PCI SCSI processor, you must use the generic NCR53C8XX
driver ("NCR53C8XX SCSI support" above) or configure both the
NCR53C8XX and this SYM53C8XX drivers either as module or linked to
the kernel image.
When both drivers are linked into the kernel, the SYM53C8XX driver
is called first at initialization and you can use the 'excl=ioaddr'
driver boot option to exclude attachment of adapters by the
SYM53C8XX driver. For example, entering
'sym53c8xx=excl:0xb400,excl=0xc000' at the lilo prompt prevents
adapters at io address 0xb400 and 0xc000 from being attached by the
SYM53C8XX driver, thus allowing the NCR53C8XX driver to attach them.
The 'excl' option is also supported by the NCR53C8XX driver.
Please read <file:drivers/scsi/README.ncr53c8xx> for more
information.
config SCSI_NCR53C8XX_DEFAULT_TAGS
int "default tagged command queue depth"
depends on SCSI_ZALON || SCSI_SYM53C8XX
default "8"
---help---
"Tagged command queuing" is a feature of SCSI-2 which improves
performance: the host adapter can send several SCSI commands to a
device's queue even if previous commands haven't finished yet.
Because the device is intelligent, it can optimize its operations
(like head positioning) based on its own request queue. Some SCSI
devices don't implement this properly; if you want to disable this
feature, enter 0 or 1 here (it doesn't matter which).
The default value is 8 and should be supported by most hard disks.
This value can be overridden from the boot command line using the
'tags' option as follows (example):
'ncr53c8xx=tags:4/t2t3q16/t0u2q10' will set default queue depth to
4, set queue depth to 16 for target 2 and target 3 on controller 0
and set queue depth to 10 for target 0 / lun 2 on controller 1.
The normal answer therefore is to go with the default 8 and to use
a boot command line option for devices that need to use a different
command queue depth.
There is no safe option other than using good SCSI devices.
config SCSI_NCR53C8XX_MAX_TAGS
int "maximum number of queued commands"
depends on SCSI_ZALON || SCSI_SYM53C8XX
default "32"
---help---
This option allows you to specify the maximum number of commands
that can be queued to any device, when tagged command queuing is
possible. The default value is 32. Minimum is 2, maximum is 64.
Modern hard disks are able to support 64 tags and even more, but
do not seem to be faster when more than 32 tags are being used.
So, the normal answer here is to go with the default value 32 unless
you are using very large hard disks with large cache (>= 1 MB) that
are able to take advantage of more than 32 tagged commands.
There is no safe option and the default answer is recommended.
config SCSI_NCR53C8XX_SYNC
int "synchronous transfers frequency in MHz"
depends on SCSI_ZALON || SCSI_SYM53C8XX
default "20"
---help---
The SCSI Parallel Interface-2 Standard defines 5 classes of transfer
rates: FAST-5, FAST-10, FAST-20, FAST-40 and FAST-80. The numbers
are respectively the maximum data transfer rates in mega-transfers
per second for each class. For example, a FAST-20 Wide 16 device is
able to transfer data at 20 million 16 bit packets per second for a
total rate of 40 MB/s.
You may specify 0 if you want to only use asynchronous data
transfers. This is the safest and slowest option. Otherwise, specify
a value between 5 and 80, depending on the capability of your SCSI
controller. The higher the number, the faster the data transfer.
Note that 80 should normally be ok since the driver decreases the
value automatically according to the controller's capabilities.
Your answer to this question is ignored for controllers with NVRAM,
since the driver will get this information from the user set-up. It
also can be overridden using a boot setup option, as follows
(example): 'ncr53c8xx=sync:12' will allow the driver to negotiate
for FAST-20 synchronous data transfer (20 mega-transfers per
second).
The normal answer therefore is not to go with the default but to
select the maximum value 80 allowing the driver to use the maximum
value supported by each controller. If this causes problems with
your SCSI devices, you should come back and decrease the value.
There is no safe option other than using good cabling, right
terminations and SCSI conformant devices.
config SCSI_NCR53C8XX_PROFILE
bool "enable profiling"
depends on SCSI_ZALON || SCSI_SYM53C8XX
help
This option allows you to enable profiling information gathering.
These statistics are not very accurate due to the low frequency
of the kernel clock (100 Hz on i386) and have performance impact
on systems that use very fast devices.
The normal answer therefore is N.
endmenu
config SCSI_NCR53C8XX_IOMAPPED
bool "use normal IO"
depends on SCSI_ZALON || SCSI_SYM53C8XX
help
If you say Y here, the driver will use normal IO, as opposed to
memory mapped IO. Memory mapped IO has less latency than normal IO
and works for most Intel-based hardware. Under Linux/Alpha only
normal IO is currently supported by the driver and so, this option
has no effect on those systems.
source "drivers/md/Kconfig"
The normal answer therefore is N; try Y only if you encounter SCSI
related problems.
#source drivers/message/fusion/Kconfig
endmenu
#source drivers/ieee1394/Kconfig
endmenu
#source drivers/message/i2o/Kconfig
source "net/Kconfig"
menu "Network device support"
depends on NET
......@@ -662,23 +283,52 @@ config NETDEVICES
Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If
unsure, say Y.
config LASI_82596
tristate "Lasi ethernet"
depends on NETDEVICES && GSC_LASI
help
Say Y here to support the on-board Intel 82596 ethernet controller
built into Hewlett-Packard PA-RISC machines.
source "drivers/net/Kconfig"
source "drivers/atm/Kconfig"
endmenu
#source "net/ax25/Kconfig"
source "net/irda/Kconfig"
#source "drivers/isdn/Kconfig"
#source "drivers/telephony/Kconfig"
# input before char - char/joystick depends on it. As does USB.
source "drivers/input/Kconfig"
source "drivers/char/Kconfig"
#source "drivers/misc/Kconfig"
source "drivers/media/Kconfig"
source "fs/Kconfig"
menu "Sound Drivers"
menu "Console drivers"
depends on VT
config STI_CONSOLE
bool "STI console"
help
The STI console is the builtin display/keyboard on HP-PARISC
machines. Say Y here to build support for it into your kernel.
The alternative is to use your primary serial port as a console.
config DUMMY_CONSOLE
bool
depends on STI_CONSOLE || SERIAL_8250_CONSOLE
default y
source "drivers/video/Kconfig"
endmenu
menu "Sound"
config SOUND
tristate "Sound card support"
......@@ -714,34 +364,29 @@ source "sound/Kconfig"
endmenu
source "drivers/usb/Kconfig"
menu "Console drivers"
depends on VT
source "net/bluetooth/Kconfig"
source "drivers/video/Kconfig"
menu "Kernel hacking"
# bool 'IODC console' CONFIG_IODC_CONSOLE
config STI_CONSOLE
bool "STI console"
config DEBUG_KERNEL
bool "Kernel debugging"
help
The STI console is the builtin display/keyboard on HP-PARISC
machines. Say Y here to build support for it into your kernel.
The alternative is to use your primary serial port as a console.
Say Y here if you are developing drivers or trying to debug and
identify kernel problems.
config DUMMY_CONSOLE
bool
depends on STI_CONSOLE || !IODC_CONSOLE && GSC_PS2
default y
endmenu
# endmenu
menu "Kernel hacking"
config DEBUG_SLAB
bool "Debug memory allocations"
depends on DEBUG_KERNEL
help
Say Y here to have the kernel do limited verification on memory
allocation as well as poisoning memory on free to catch use of freed
memory.
#bool 'Debug kmalloc/kfree' CONFIG_DEBUG_MALLOC
config MAGIC_SYSRQ
bool "Magic SysRq key"
depends on DEBUG_KERNEL
help
If you say Y here, you will have some control over the system even
if the system crashes for example during kernel debugging (e.g., you
......@@ -753,6 +398,14 @@ config MAGIC_SYSRQ
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
unless you really know what this hack does.
config KALLSYMS
bool "Load all symbols for debugging/kksymoops"
depends on DEBUG_KERNEL
help
Say Y here to let the kernel print out symbolic crash information and
symbolic stack backtraces. This increases the size of the kernel
somewhat, as all symbols have to be loaded into the kernel image.
endmenu
source "security/Kconfig"
......
......@@ -80,7 +80,6 @@ core-y += arch/parisc/kernel/pdc_cons.o \
arch/parisc/kernel/init_task.o
libs-y += arch/parisc/lib/ \
`$(CC) -print-libgcc-file-name`
drivers-$(CONFIG_MATH_EMULATION) += arch/parisc/math-emu/
palo: vmlinux
@if [ $$(palo -f /dev/null >/dev/null 2>&1 ; echo $$?) != 2 ]; then \
......
#
# Makefile for the linux kernel.
# Makefile for arch/parisc/kernel
#
ifdef CONFIG_PARISC64
......@@ -27,5 +27,3 @@ obj-$(CONFIG_PARISC64) += binfmt_elf32.o sys_parisc32.o \
ioctl32.o signal32.o
# only supported for PCX-W/U in 64-bit mode at the moment
obj-$(CONFIG_PARISC64) += perf.o perf_asm.o
include $(TOPDIR)/Rules.make
......@@ -35,6 +35,7 @@ int main(void)
DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace));
DEFINE(TASK_MM, offsetof(struct task_struct, mm));
DEFINE(TASK_PERSONALITY, offsetof(struct task_struct, personality));
DEFINE(TASK_PID, offsetof(struct task_struct, pid));
BLANK();
DEFINE(TASK_REGS, offsetof(struct task_struct, thread.regs));
DEFINE(TASK_PT_PSW, offsetof(struct task_struct, thread.regs.gr[ 0]));
......
......@@ -23,7 +23,6 @@
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/pdc.h>
#include <asm/gsc.h>
/* See comments in include/asm-parisc/pci.h */
struct pci_dma_ops *hppa_dma_ops;
......
......@@ -502,7 +502,6 @@ fault_vector_11:
.import handle_real_interruption,code
.import do_cpu_irq_mask,code
.import parisc_stopkernel,code
.import cpu_irq_region,data
/*
* r26 = function to be called
......@@ -528,23 +527,28 @@ __kernel_thread:
ldd 24(%r26), %r2
STREG %r2, PT_GR27(%r1) /* Store childs %dp */
ldd 16(%r26), %r26
STREG %r22, PT_GR22(%r1) /* Store childs %dp */
copy %r0, %r22 /* user_tid */
#endif
STREG %r26, PT_GR26(%r1) /* Store function & argument for child */
STREG %r25, PT_GR25(%r1)
ldo CLONE_VM(%r0), %r26 /* Force CLONE_VM since only init_mm */
or %r26, %r24, %r26 /* will have kernel mappings. */
copy %r0, %r25
copy %r0, %r25 /* stack_start */
stw %r0, -52(%r30) /* user_tid */
#ifdef __LP64__
ldo -16(%r30),%r29 /* Reference param save area */
#endif
bl do_fork, %r2
copy %r1, %r24
copy %r1, %r24 /* pt_regs */
/* Parent Returns here */
LDREG -PT_SZ_ALGN-RP_OFFSET(%r30), %r2
bv %r0(%r2)
ldo -PT_SZ_ALGN(%r30), %r30
bv %r0(%r2)
ldw TASK_PID(%r28), %r28
/*
* Child Returns here
......@@ -566,6 +570,7 @@ ret_from_kernel_thread:
LDREG TASK_PT_GR25(%r1), %r26
#ifdef __LP64__
LDREG TASK_PT_GR27(%r1), %r27
LDREG TASK_PT_GR22(%r1), %r22
#endif
LDREG TASK_PT_GR26(%r1), %r1
ble 0(%sr7, %r1)
......@@ -785,10 +790,10 @@ intr_do_softirq:
.import schedule,code
intr_do_resched:
/* Only do reschedule if we are returning to user space */
LDREG PT_IASQ0(%r16), %r20
LDREG PT_IASQ0(%r16), %r20
CMPIB= 0,%r20,intr_restore /* backward */
nop
LDREG PT_IASQ1(%r16), %r20
LDREG PT_IASQ1(%r16), %r20
CMPIB= 0,%r20,intr_restore /* backward */
nop
......@@ -796,28 +801,29 @@ intr_do_resched:
ldo -16(%r30),%r29 /* Reference param save area */
#endif
ldil L%intr_return, %r2
ldil L%intr_check_sig, %r2
b schedule
ldo R%intr_return(%r2), %r2 /* return to intr_return, not here */
ldo R%intr_check_sig(%r2), %r2
.import do_signal,code
intr_do_signal:
/* Only do signals if we are returning to user space */
LDREG PT_IASQ0(%r16), %r20
LDREG PT_IASQ0(%r16), %r20
CMPIB= 0,%r20,intr_restore /* backward */
nop
LDREG PT_IASQ1(%r16), %r20
LDREG PT_IASQ1(%r16), %r20
CMPIB= 0,%r20,intr_restore /* backward */
nop
copy %r0, %r24 /* unsigned long in_syscall */
copy %r16, %r25 /* struct pt_regs *regs */
ssm PSW_SM_I, %r0
#ifdef __LP64__
ldo -16(%r30),%r29 /* Reference param save area */
#endif
#warning TAUSQ FIXME, this is wrong
#warning TAUSQ FIXME - review 2.5 signal return path changes
bl do_signal,%r2
copy %r0, %r26 /* sigset_t *oldset = NULL */
......@@ -860,26 +866,19 @@ intr_extint:
loadgp
copy %r29, %r25 /* arg1 is pt_regs */
copy %r29, %r26 /* arg0 is pt_regs */
copy %r29, %r16 /* save pt_regs */
ldil L%intr_return, %r2
#ifdef __LP64__
ldo -16(%r30),%r29 /* Reference param save area */
#else
nop
#endif
/*
* We need to either load the CPU's ID or IRQ region.
* Until we have "per CPU" IRQ regions, this is easy.
*/
ldil L%cpu_irq_region, %r26
ldil L%intr_return, %r2
ldo R%cpu_irq_region(%r26), %r26
b do_cpu_irq_mask
ldo R%intr_return(%r2), %r2 /* return to intr_return, not here */
/* Generic interruptions (illegal insn, unaligned, page fault, etc) */
.export intr_save, code /* for os_hpmc */
......@@ -953,11 +952,11 @@ skip_save_ior:
ldo -16(%r30),%r29 /* Reference param save area */
#endif
ldil L%intr_return, %r2
ldil L%intr_restore, %r2
copy %r25, %r16 /* save pt_regs */
b handle_interruption
ldo R%intr_return(%r2), %r2 /* return to intr_return */
ldo R%intr_restore(%r2), %r2
/*
......
......@@ -403,7 +403,7 @@ static struct hp_hardware hp_hardware_list[] __initdata = {
{HPHW_BA, 0x01B, 0x00078, 0x0, "Anole 100 VME BA"},
{HPHW_BA, 0x024, 0x00078, 0x0, "Fast Pace VME BA"},
{HPHW_BA, 0x034, 0x00078, 0x0, "Anole T VME BA"},
{HPHW_BA, 0x04A, 0x00078, 0x0, "Anole L2 132 BME BA"},
{HPHW_BA, 0x04A, 0x00078, 0x0, "Anole L2 132 VME BA"},
{HPHW_BA, 0x04C, 0x00078, 0x0, "Anole L2 165 VME BA"},
{HPHW_BA, 0x011, 0x00081, 0x0, "WB-96 Core BA"},
{HPHW_BA, 0x012, 0x00081, 0x0, "Orville UX Core BA"},
......@@ -805,8 +805,8 @@ static struct hp_hardware hp_hardware_list[] __initdata = {
{HPHW_FIO, 0x04E, 0x0007B, 0x0, "Kiji L2 132 Core Audio"},
{HPHW_FIO, 0x050, 0x0007B, 0x0, "Merlin Jr 132 Core Audio"},
{HPHW_FIO, 0x051, 0x0007B, 0x0, "Firehawk Audio"},
{HPHW_FIO, 0x056, 0x0007B, 0x0, "Raven+ w SE FWSCSU Core Audio"},
{HPHW_FIO, 0x057, 0x0007B, 0x0, "Raven+ w Diff FWSCSU Core Audio"},
{HPHW_FIO, 0x056, 0x0007B, 0x0, "Raven+ w SE FWSCSI Core Audio"},
{HPHW_FIO, 0x057, 0x0007B, 0x0, "Raven+ w Diff FWSCSI Core Audio"},
{HPHW_FIO, 0x058, 0x0007B, 0x0, "FireHawk 200 Audio"},
{HPHW_FIO, 0x05C, 0x0007B, 0x0, "SummitHawk 230 Core Audio"},
{HPHW_FIO, 0x800, 0x0007B, 0x0, "Hitachi Tiny 64 Audio"},
......
......@@ -57,7 +57,7 @@ extern void ipi_interrupt(int, void *, struct pt_regs *);
/* Bits in EIEM correlate with cpu_irq_action[].
** Numbered *Big Endian*! (ie bit 0 is MSB)
*/
static unsigned long cpu_eiem = 0;
static volatile unsigned long cpu_eiem = 0;
static spinlock_t irq_lock = SPIN_LOCK_UNLOCKED; /* protect IRQ regions */
......@@ -104,24 +104,35 @@ static inline void unmask_cpu_irq(void *unused, int irq)
set_eiem(cpu_eiem);
}
static struct irqaction cpu_irq_actions[IRQ_PER_REGION] = {
/*
* XXX cpu_irq_actions[] will become 2 dimensional for per CPU EIR support.
* correspond changes needed in:
* processor_probe() initialize additional action arrays
* request_irq() handle CPU IRQ region specially
* do_cpu_irq_mask() index into the matching irq_action array.
*/
struct irqaction cpu_irq_actions[IRQ_PER_REGION] = {
[IRQ_OFFSET(TIMER_IRQ)] { handler: timer_interrupt, name: "timer", },
#ifdef CONFIG_SMP
[IRQ_OFFSET(IPI_IRQ)] { handler: ipi_interrupt, name: "IPI", },
#endif
};
struct irq_region cpu_irq_region = {
struct irq_region_ops cpu_irq_ops = {
disable_cpu_irq, enable_cpu_irq, unmask_cpu_irq, unmask_cpu_irq
};
struct irq_region cpu0_irq_region = {
ops: { disable_cpu_irq, enable_cpu_irq, unmask_cpu_irq, unmask_cpu_irq },
data: { dev: &cpu_data[0],
name: "PA-CPU-00",
name: "PARISC-CPU",
irqbase: IRQ_FROM_REGION(CPU_IRQ_REGION), },
action: cpu_irq_actions,
};
struct irq_region *irq_region[NR_IRQ_REGS] = {
[ 0 ] NULL, /* reserved for EISA, else causes data page fault (aka code 15) */
[ CPU_IRQ_REGION ] &cpu_irq_region,
[ CPU_IRQ_REGION ] &cpu0_irq_region,
};
......@@ -192,10 +203,10 @@ int show_interrupts(struct seq_file *p, void *v)
unsigned int regnr = 0;
seq_puts(p, " ");
#if 0 /* def CONFIG_SMP */
for (; regnr < smp_num_cpus; regnr++)
#ifdef CONFIG_SMP
for (regnr = 0; regnr < NR_CPUS; regnr++)
#endif
seq_printf(p, " CPU%d ", regnr);
seq_printf(p, " CPU%02d ", regnr);
#ifdef PARISC_IRQ_CR16_COUNTS
seq_printf(p, "[min/avg/max] (CPU cycle counts)");
......@@ -216,24 +227,16 @@ int show_interrupts(struct seq_file *p, void *v)
for (i = 0; i <= MAX_CPU_IRQ; i++) {
struct irqaction *action = &region->action[i];
unsigned int irq_no = IRQ_FROM_REGION(regnr) + i;
#if 0 /* def CONFIG_SMP */
/* We currently direct all Interrupts at the Monarch.
* The right way to handle SMP IRQ stats is to have one IRQ region/CPU.
*/
unsigned int j;
#endif
int j=0;
if (!action->handler)
continue;
seq_printf(p, "%3d: ", irq_no);
#if 1 /* ndef CONFIG_SMP */
seq_printf(p, "%10u ", kstat_irqs(irq_no));
#else
for (j = 0; j < smp_num_cpus; j++)
seq_printf(p, "%10u ",
kstat.irqs[cpu_logical_map(j)][irq_no]);
#ifdef CONFIG_SMP
for (; j < NR_CPUS; j++)
#endif
seq_printf(p, "%10u ", kstat.irqs[j][regnr][irq_no]);
seq_printf(p, " %14s",
region->data.name ? region->data.name : "N/A");
#ifndef PARISC_IRQ_CR16_COUNTS
......@@ -243,12 +246,12 @@ int show_interrupts(struct seq_file *p, void *v)
seq_printf(p, ", %s", action->name);
#else
for ( ;action; action = action->next) {
unsigned int i, avg, min, max;
unsigned int k, avg, min, max;
min = max = action->cr16_hist[0];
for (avg = i = 0; i < PARISC_CR16_HIST_SIZE; i++) {
int hist = action->cr16_hist[i];
for (avg = k = 0; k < PARISC_CR16_HIST_SIZE; k++) {
int hist = action->cr16_hist[k];
if (hist) {
avg += hist;
......@@ -259,7 +262,7 @@ int show_interrupts(struct seq_file *p, void *v)
if (hist < min) min = hist;
}
avg /= i;
avg /= k;
seq_printf(p, " %s[%d/%d/%d]", action->name,
min,avg,max);
}
......@@ -292,7 +295,7 @@ txn_alloc_irq(void)
/* never return irq 0 cause that's the interval timer */
for (irq = 1; irq <= MAX_CPU_IRQ; irq++) {
if (cpu_irq_region.action[irq].handler == NULL) {
if (cpu_irq_actions[irq].handler == NULL) {
return (IRQ_FROM_REGION(CPU_IRQ_REGION) + irq);
}
}
......@@ -314,14 +317,18 @@ txn_claim_irq(int irq)
unsigned long
txn_alloc_addr(int virt_irq)
{
struct cpuinfo_parisc *dev = (struct cpuinfo_parisc *) (irq_region[IRQ_REGION(virt_irq)]->data.dev);
static int next_cpu = -1;
if (!dev) {
printk(KERN_ERR "txn_alloc_addr(0x%x): CPU IRQ region? dev %p\n",
virt_irq,dev);
return 0;
}
return (dev->txn_addr);
next_cpu++; /* assign to "next" CPU we want this bugger on */
/* validate entry */
while ((next_cpu < NR_CPUS) && !cpu_data[next_cpu].txn_addr)
next_cpu++;
if (next_cpu >= NR_CPUS)
next_cpu = 0; /* nothing else, assign monarch */
return cpu_data[next_cpu].txn_addr;
}
......@@ -365,7 +372,7 @@ void do_irq(struct irqaction *action, int irq, struct pt_regs * regs)
int cpu = smp_processor_id();
irq_enter();
++kstat.irqs[IRQ_REGION(irq)][IRQ_OFFSET(irq)];
++kstat.irqs[cpu][IRQ_REGION(irq)][IRQ_OFFSET(irq)];
DBG_IRQ(irq, ("do_irq(%d) %d+%d\n", irq, IRQ_REGION(irq), IRQ_OFFSET(irq)));
......@@ -407,7 +414,7 @@ void do_irq(struct irqaction *action, int irq, struct pt_regs * regs)
/* ONLY called from entry.S:intr_extint() */
void do_cpu_irq_mask(struct irq_region *region, struct pt_regs *regs)
void do_cpu_irq_mask(struct pt_regs *regs)
{
unsigned long eirr_val;
unsigned int i=3; /* limit time in interrupt context */
......@@ -431,7 +438,7 @@ void do_cpu_irq_mask(struct irq_region *region, struct pt_regs *regs)
*/
while ((eirr_val = (mfctl(23) & cpu_eiem)) && --i) {
unsigned long bit = (1UL<<MAX_CPU_IRQ);
unsigned int irq = 0;
unsigned int irq;
mtctl(eirr_val, 23); /* reset bits we are going to process */
......@@ -440,17 +447,16 @@ void do_cpu_irq_mask(struct irq_region *region, struct pt_regs *regs)
printk(KERN_DEBUG "do_cpu_irq_mask %x\n", eirr_val);
#endif
for (; eirr_val && bit; bit>>=1, irq++)
/* Work our way from MSb to LSb...same order we alloc EIRs */
for (irq = 0; eirr_val && bit; bit>>=1, irq++)
{
unsigned int irq_num;
if (!(bit&eirr_val))
if (!(bit & eirr_val & cpu_eiem))
continue;
/* clear bit in mask - can exit loop sooner */
eirr_val &= ~bit;
irq_num = region->data.irqbase + irq;
do_irq(&region->action[irq], irq_num, regs);
do_irq(&cpu_irq_actions[irq], TIMER_IRQ+irq, regs);
}
}
set_eiem(cpu_eiem);
......@@ -675,6 +681,14 @@ void free_irq(unsigned int irq, void *dev_id)
}
#ifdef CONFIG_SMP
void synchronize_irq(unsigned int irqnum)
{
while (in_irq()) ;
}
#endif
/*
* IRQ autodetection code..
*
......
......@@ -7,7 +7,7 @@
#include <linux/sched.h>
#include <linux/smp.h>
#include <linux/kernel.h>
#include <asm/gsc.h>
#include <asm/io.h>
#include <asm/ptrace.h>
#include <asm/machdep.h>
......
......@@ -79,13 +79,9 @@ extern int $global$;
EXPORT_SYMBOL_NOVERS($global$);
#endif
#include <asm/gsc.h>
EXPORT_SYMBOL(register_parisc_driver);
EXPORT_SYMBOL(unregister_parisc_driver);
EXPORT_SYMBOL(pdc_iodc_read);
#ifdef CONFIG_GSC
EXPORT_SYMBOL(gsc_alloc_irq);
#endif
#include <asm/io.h>
EXPORT_SYMBOL(__ioremap);
......
......@@ -49,11 +49,11 @@
#include <linux/miscdevice.h>
#include <linux/spinlock.h>
#include <asm/gsc.h>
#include <asm/uaccess.h>
#include <asm/perf.h>
#include <asm/processor.h>
#include <asm/runway.h>
#include <asm/io.h> /* for __raw_read() */
#include "perf_images.h"
......
......@@ -35,7 +35,6 @@
#include <asm/pgalloc.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/gsc.h>
#include <asm/processor.h>
#include <asm/pdc_chassis.h>
......
......@@ -167,12 +167,24 @@ static int __init processor_probe(struct parisc_device *dev)
** p->state = STATE_RENDEZVOUS;
*/
/*
** itimer and ipi IRQ handlers are statically initialized in
** arch/parisc/kernel/irq.c. ie Don't need to register them.
*/
p->region = irq_region[IRQ_FROM_REGION(CPU_IRQ_REGION)];
#if 0
/* CPU 0 IRQ table is statically allocated/initialized */
if (cpuid) {
struct irqaction actions[];
/*
** itimer and ipi IRQ handlers are statically initialized in
** arch/parisc/kernel/irq.c. ie Don't need to register them.
*/
actions = kmalloc(sizeof(struct irqaction)*MAX_CPU_IRQ, GFP_ATOMIC);
if (!actions) {
/* not getting it's own table, share with monarch */
actions = cpu_irq_actions[0];
}
cpu_irq_actions[cpuid] = actions;
}
#endif
return 0;
}
......
......@@ -15,6 +15,7 @@
#include <linux/ptrace.h>
#include <linux/user.h>
#include <linux/personality.h>
#include <linux/security.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
......@@ -101,6 +102,11 @@ long sys_ptrace(long request, pid_t pid, long addr, long data)
/* are we already being traced? */
if (current->ptrace & PT_PTRACED)
goto out;
ret = security_ops->ptrace(current->parent, current);
if (ret)
goto out;
/* set the ptrace bit in the process flags. */
current->ptrace |= PT_PTRACED;
ret = 0;
......
......@@ -143,10 +143,8 @@ void __init setup_arch(char **cmdline_p)
dma_ops_init();
#endif
#ifdef CONFIG_VT
# if defined(CONFIG_STI_CONSOLE) || defined(CONFIG_DUMMY_CONSOLE)
#ifdef CONFIG_DUMMY_CONSOLE
conswitchp = &dummy_con; /* we use take_over_console() later ! */
# endif
#endif
}
......
......@@ -147,6 +147,40 @@ long sys_shmat_wrapper(int shmid, char *shmaddr, int shmflag)
}
/* Fucking broken ABI */
extern asmlinkage long sys_truncate64(const char *, loff_t);
extern asmlinkage long sys_ftruncate64(unsigned int, loff_t);
extern asmlinkage ssize_t sys_pread64(unsigned int fd, char *buf,
size_t count, loff_t pos);
extern asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char *buf,
size_t count, loff_t pos);
asmlinkage long parisc_truncate64(const char * path,
unsigned int high, unsigned int low)
{
return sys_truncate(path, (loff_t)high << 32 | low);
}
asmlinkage long parisc_ftruncate64(unsigned int fd,
unsigned int high, unsigned int low)
{
return sys_ftruncate(fd, (loff_t)high << 32 | low);
}
asmlinkage ssize_t parisc_pread64(unsigned int fd, char *buf, size_t count,
unsigned int high, unsigned int low)
{
return sys_pread64(fd, buf, count, (loff_t)high << 32 | low);
}
asmlinkage ssize_t parisc_pwrite64(unsigned int fd, const char *buf,
size_t count, unsigned int high, unsigned int low)
{
return sys_pwrite64(fd, buf, count, (loff_t)high << 32 | low);
}
/*
* FIXME, please remove this crap as soon as possible
*
......
......@@ -2743,20 +2743,8 @@ asmlinkage long sys32_msgrcv(int msqid,
/* LFS */
extern asmlinkage long sys_truncate(const char *, loff_t);
extern asmlinkage long sys_ftruncate(unsigned int, loff_t);
extern asmlinkage long sys_fcntl(unsigned int, unsigned int, unsigned long);
asmlinkage long sys32_truncate64(const char * path, unsigned int high, unsigned int low)
{
return sys_truncate(path, (loff_t)high << 32 | low);
}
asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned int high, unsigned int low)
{
return sys_ftruncate(fd, (loff_t)high << 32 | low);
}
asmlinkage long sys32_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
{
switch (cmd) {
......
......@@ -331,10 +331,12 @@ tracesys_sigexit:
#define ENTRY_SAME(_name_) .dword sys_##_name_
#define ENTRY_DIFF(_name_) .dword sys32_##_name_
#define ENTRY_UHOH(_name_) .dword sys32_##unimplemented
#define ENTRY_OURS(_name_) .dword parisc_##_name_
#else
#define ENTRY_SAME(_name_) .word sys_##_name_
#define ENTRY_DIFF(_name_) .word sys_##_name_
#define ENTRY_UHOH(_name_) .word sys_##_name_
#define ENTRY_OURS(_name_) .word parisc_##_name_
#endif
.align 8
......@@ -398,7 +400,7 @@ sys_call_table:
/* struct sockaddr... */
ENTRY_SAME(getsockname)
/* it seems possible brk() could return a >4G pointer... */
ENTRY_SAME(brk) /* 45 */
ENTRY_SAME(brk) /* 45 */
ENTRY_SAME(setgid)
ENTRY_SAME(getgid)
ENTRY_SAME(signal)
......@@ -476,8 +478,8 @@ sys_call_table:
ENTRY_DIFF(getitimer) /* 105 */
ENTRY_SAME(capget)
ENTRY_SAME(capset)
ENTRY_SAME(pread64)
ENTRY_SAME(pwrite64)
ENTRY_OURS(pread64)
ENTRY_OURS(pwrite64)
ENTRY_SAME(getcwd) /* 110 */
ENTRY_SAME(vhangup)
ENTRY_SAME(fstat64)
......@@ -592,18 +594,18 @@ sys_call_table:
ENTRY_SAME(shmat_wrapper)
ENTRY_SAME(shmdt)
ENTRY_SAME(shmget)
ENTRY_SAME(shmctl_broken) /* 195 */
ENTRY_SAME(shmctl_broken) /* 195 */
ENTRY_SAME(ni_syscall) /* streams1 */
ENTRY_SAME(ni_syscall) /* streams2 */
ENTRY_SAME(lstat64)
ENTRY_DIFF(truncate64)
ENTRY_DIFF(ftruncate64) /* 200 */
ENTRY_OURS(truncate64)
ENTRY_OURS(ftruncate64) /* 200 */
ENTRY_SAME(getdents64)
ENTRY_DIFF(fcntl64)
#ifdef CONFIG_XFS_FS
ENTRY_SAME(attrctl)
ENTRY_SAME(acl_get)
ENTRY_SAME(acl_set) /* 205 */
ENTRY_SAME(acl_set) /* 205 */
#else
ENTRY_SAME(ni_syscall)
ENTRY_SAME(ni_syscall)
......
#
# Makefile for parisc-specific library files..
# Makefile for parisc-specific library files
#
L_TARGET = lib.a
obj-y := lusercopy.o bitops.o checksum.o io.o memset.o
include $(TOPDIR)/Rules.make
#
# Makefile for the linux/parisc floating point code
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# Note 2! The CFLAGS definition is now in the main makefile...
obj-y := frnd.o driver.o decode_exc.o fpudispatch.o denormal.o \
dfmpy.o sfmpy.o sfsqrt.o dfsqrt.o dfadd.o fmpyfadd.o \
......@@ -16,6 +11,4 @@ obj-y := frnd.o driver.o decode_exc.o fpudispatch.o denormal.o \
# Math emulation code beyond the FRND is required for 712/80i and
# other very old or stripped-down PA-RISC CPUs -- not currently supported
obj-$CONFIG_MATH_EMULATION += unimplemented-math-emulation.o
include $(TOPDIR)/Rules.make
obj-$(CONFIG_MATH_EMULATION) += unimplemented-math-emulation.o
#
# Makefile for the linux parisc-specific parts of the memory manager.
# Makefile for arch/parisc/mm
#
obj-y := init.o fault.o extable.o ioremap.o
include $(TOPDIR)/Rules.make
......@@ -93,7 +93,6 @@
#include <asm/irq.h>
#include <asm/pdc.h>
#include <asm/gsc.h>
#include <asm/cache.h>
static char version[] __devinitdata =
......
/* $Id: dma.h,v 1.1 2002/07/20 15:52:25 rhirst Exp $
/* $Id: dma.h,v 1.2 1999/04/27 00:46:18 deller Exp $
* linux/include/asm/dma.h: Defines for using and allocating dma channels.
* Written by Hennus Bergman, 1992.
* High DMA channel support & info by Hannu Savolainen
......@@ -177,11 +177,7 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count)
}
/* These are in kernel/dma.c: */
extern int request_dma(unsigned int dmanr, const char * device_id); /* reserve a DMA channel */
extern void free_dma(unsigned int dmanr); /* release it again */
extern int get_dma_list(char *buf); /* proc/dma support */
#define free_dma(dmanr)
#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
......
#ifndef ASM_PARISC_GSC_H
#define ASM_PARISC_GSC_H
#ifdef __KERNEL__
#include <linux/types.h>
#include <asm/io.h> /* temporary for __raw_{read,write} */
/* Please, call ioremap and use {read,write}[bwl] instead. These functions
* are not very fast.
*/
#define gsc_readb(x) __raw_readb((unsigned long)x)
#define gsc_readw(x) __raw_readw((unsigned long)x)
#define gsc_readl(x) __raw_readl((unsigned long)x)
#define gsc_writeb(x, y) __raw_writeb(x, (unsigned long)y)
#define gsc_writew(x, y) __raw_writew(x, (unsigned long)y)
#define gsc_writel(x, y) __raw_writel(x, (unsigned long)y)
struct gsc_irq {
unsigned long txn_addr; /* IRQ "target" */
int txn_data; /* HW "IRQ" */
int irq; /* virtual IRQ */
};
/* PA I/O Architected devices support at least 5 bits in the EIM register. */
#define GSC_EIM_WIDTH 5
extern int gsc_alloc_irq(struct gsc_irq *dev); /* dev needs an irq */
extern int gsc_claim_irq(struct gsc_irq *dev, int irq); /* dev needs this irq */
#endif /* __KERNEL__ */
#endif /* LINUX_GSC_H */
......@@ -182,6 +182,18 @@ extern void memset_io(unsigned long dest, char fill, int count);
#define isa_memcpy_fromio(a,b,c) memcpy_fromio((a), EISA_BASE | (b), (c))
#define isa_memcpy_toio(a,b,c) memcpy_toio(EISA_BASE | (a), (b), (c))
/*
* These functions support PA-RISC drivers which don't yet call ioremap().
* They will disappear once the last of these drivers is gone.
*/
#define gsc_readb(x) __raw_readb((unsigned long)x)
#define gsc_readw(x) __raw_readw((unsigned long)x)
#define gsc_readl(x) __raw_readl((unsigned long)x)
#define gsc_writeb(x, y) __raw_writeb(x, (unsigned long)y)
#define gsc_writew(x, y) __raw_writew(x, (unsigned long)y)
#define gsc_writel(x, y) __raw_writel(x, (unsigned long)y)
/*
* XXX - We don't have csum_partial_copy_fromio() yet, so we cheat here and
* just copy it. The net code will then do the checksum later. Presently
......
......@@ -15,6 +15,7 @@
#define POLLWRNORM 0x0100
#define POLLWRBAND 0x0200
#define POLLMSG 0x0400
#define POLLREMOVE 0x1000
struct pollfd {
int fd;
......
......@@ -73,10 +73,8 @@ struct system_cpuinfo_parisc {
** Per CPU data structure - ie varies per CPU.
*/
struct cpuinfo_parisc {
struct irq_region *region;
unsigned long it_value; /* Interval Timer value at last timer Intr */
unsigned long it_delta; /* Interval Timer delta (tic_10ms / HZ * 100) */
unsigned long it_value; /* Interval Timer at last timer Intr */
unsigned long it_delta; /* Interval delta (tic_10ms / HZ * 100) */
unsigned long irq_count; /* number of IRQ's since boot */
unsigned long irq_max_cr16; /* longest time to handle a single IRQ */
unsigned long cpuid; /* aka slot_number or set to NO_PROC_ID */
......
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