[PATCH] PA-RISC updates
authorMatthew Wilcox <willy@debian.org>
Sun, 3 Nov 2002 08:21:37 +0000 (00:21 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Sun, 3 Nov 2002 08:21:37 +0000 (00:21 -0800)
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

27 files changed:
arch/parisc/Kconfig
arch/parisc/Makefile
arch/parisc/kernel/Makefile
arch/parisc/kernel/asm-offsets.c
arch/parisc/kernel/drivers.c
arch/parisc/kernel/entry.S
arch/parisc/kernel/hardware.c
arch/parisc/kernel/irq.c
arch/parisc/kernel/pa7300lc.c
arch/parisc/kernel/parisc_ksyms.c
arch/parisc/kernel/perf.c
arch/parisc/kernel/process.c
arch/parisc/kernel/processor.c
arch/parisc/kernel/ptrace.c
arch/parisc/kernel/setup.c
arch/parisc/kernel/sys_parisc.c
arch/parisc/kernel/sys_parisc32.c
arch/parisc/kernel/syscall.S
arch/parisc/lib/Makefile
arch/parisc/math-emu/Makefile
arch/parisc/mm/Makefile
drivers/net/lasi_82596.c
include/asm-parisc/dma.h
include/asm-parisc/gsc.h [deleted file]
include/asm-parisc/io.h
include/asm-parisc/poll.h
include/asm-parisc/processor.h

index f6957f4..cae5776 100644 (file)
@@ -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"
index 331c7b4..7d8ea38 100644 (file)
@@ -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 \
index c01c462..e5151a0 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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
index eee69b0..58919f2 100644 (file)
@@ -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]));
index bda0adb..aebd02d 100644 (file)
@@ -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;
index 156e56e..5471710 100644 (file)
@@ -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
 
 
        /*
index cb69214..db4720d 100644 (file)
@@ -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"}, 
index c8ef298..9eb5608 100644 (file)
@@ -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..
  *
index 1589e45..8a89780 100644 (file)
@@ -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>
 
index c67403a..0ecefe2 100644 (file)
@@ -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);
index 0c1c647..5c7974b 100644 (file)
 #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"
 
index ce28318..debb934 100644 (file)
@@ -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>
 
index 254a082..187041a 100644 (file)
@@ -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;
 }
 
index 7cc6d20..a875149 100644 (file)
@@ -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;
index 6ac6d24..b83a798 100644 (file)
@@ -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
 
 }
index c89bcc7..a94fefc 100644 (file)
@@ -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
  *
index 588fc0d..4847d9f 100644 (file)
@@ -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) {
index 92356a7..742ea4a 100644 (file)
@@ -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)
index d4f8d5a..e89a845 100644 (file)
@@ -1,9 +1,5 @@
 #
-# 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
index 8f9fb07..1755d66 100644 (file)
@@ -1,11 +1,6 @@
 #
 # 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
index 31af42f..7d071aa 100644 (file)
@@ -1,7 +1,5 @@
 #
-# 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
index 49ffd44..1c0ec4b 100644 (file)
@@ -93,7 +93,6 @@
 #include <asm/irq.h>
 
 #include <asm/pdc.h>
-#include <asm/gsc.h>
 #include <asm/cache.h>
 
 static char version[] __devinitdata =
index d51c41b..b087f55 100644 (file)
@@ -1,4 +1,4 @@
-/* $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;
diff --git a/include/asm-parisc/gsc.h b/include/asm-parisc/gsc.h
deleted file mode 100644 (file)
index 6ec1139..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#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 */
index 636800b..ea211e3 100644 (file)
@@ -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 
index 55ebfcc..1c1da86 100644 (file)
@@ -15,6 +15,7 @@
 #define POLLWRNORM     0x0100
 #define POLLWRBAND     0x0200
 #define POLLMSG                0x0400
+#define POLLREMOVE     0x1000
 
 struct pollfd {
        int fd;
index c69b744..a3cab76 100644 (file)
@@ -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 */