Merge master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6
This commit is contained in:
@@ -149,14 +149,20 @@ config HOTPLUG_CPU
|
||||
default y if SMP
|
||||
select HOTPLUG
|
||||
|
||||
config ARCH_SELECT_MEMORY_MODEL
|
||||
def_bool y
|
||||
depends on 64BIT
|
||||
|
||||
config ARCH_DISCONTIGMEM_ENABLE
|
||||
bool "Discontiguous memory support (EXPERIMENTAL)"
|
||||
depends on 64BIT && EXPERIMENTAL
|
||||
help
|
||||
Say Y to support efficient handling of discontiguous physical memory,
|
||||
for architectures which are either NUMA (Non-Uniform Memory Access)
|
||||
or have huge holes in the physical address space for other reasons.
|
||||
See <file:Documentation/vm/numa> for more.
|
||||
def_bool y
|
||||
depends on 64BIT
|
||||
|
||||
config ARCH_FLATMEM_ENABLE
|
||||
def_bool y
|
||||
|
||||
config ARCH_DISCONTIGMEM_DEFAULT
|
||||
def_bool y
|
||||
depends on ARCH_DISCONTIGMEM_ENABLE
|
||||
|
||||
source "kernel/Kconfig.hz"
|
||||
source "mm/Kconfig"
|
||||
|
@@ -11,4 +11,14 @@ config DEBUG_RWLOCK
|
||||
too many attempts. If you suspect a rwlock problem or a kernel
|
||||
hacker asks for this option then say Y. Otherwise say N.
|
||||
|
||||
config DEBUG_RODATA
|
||||
bool "Write protect kernel read-only data structures"
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
Mark the kernel read-only data as write-protected in the pagetables,
|
||||
in order to catch accidental (and incorrect) writes to such const
|
||||
data. This option may have a slight performance impact because a
|
||||
portion of the kernel code won't be covered by a TLB anymore.
|
||||
If in doubt, say "N".
|
||||
|
||||
endmenu
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.14-rc5-pa1
|
||||
# Fri Oct 21 23:06:10 2005
|
||||
# Linux kernel version: 2.6.16-rc1-pa0
|
||||
# Tue Jan 17 08:21:01 2006
|
||||
#
|
||||
CONFIG_PARISC=y
|
||||
CONFIG_MMU=y
|
||||
@@ -29,8 +29,6 @@ CONFIG_SYSVIPC=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
@@ -38,8 +36,10 @@ CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
@@ -48,8 +48,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
@@ -57,9 +59,27 @@ CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_UNLOAD is not set
|
||||
CONFIG_OBSOLETE_MODPARM=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
# CONFIG_KMOD is not set
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_DEFAULT_AS is not set
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
#
|
||||
@@ -77,6 +97,7 @@ CONFIG_HZ=250
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_HPUX is not set
|
||||
|
||||
@@ -84,8 +105,8 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# Bus options (PCI, PCMCIA, EISA, GSC, ISA)
|
||||
#
|
||||
CONFIG_GSC=y
|
||||
# CONFIG_HPPB is not set
|
||||
# CONFIG_IOMMU_CCIO is not set
|
||||
CONFIG_HPPB=y
|
||||
CONFIG_IOMMU_CCIO=y
|
||||
CONFIG_GSC_LASI=y
|
||||
CONFIG_GSC_WAX=y
|
||||
CONFIG_EISA=y
|
||||
@@ -165,8 +186,11 @@ CONFIG_IPV6=y
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
@@ -205,6 +229,7 @@ CONFIG_STANDALONE=y
|
||||
CONFIG_PARPORT=y
|
||||
CONFIG_PARPORT_PC=y
|
||||
# CONFIG_PARPORT_SERIAL is not set
|
||||
CONFIG_PARPORT_NOT_PC=y
|
||||
CONFIG_PARPORT_GSC=y
|
||||
# CONFIG_PARPORT_1284 is not set
|
||||
|
||||
@@ -230,14 +255,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
||||
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_ATA_OVER_ETH=y
|
||||
|
||||
#
|
||||
@@ -281,6 +298,7 @@ CONFIG_SCSI_SPI_ATTRS=y
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
||||
# CONFIG_SCSI_3W_9XXX is not set
|
||||
# CONFIG_SCSI_ACARD is not set
|
||||
@@ -313,21 +331,19 @@ CONFIG_SCSI_SYM53C8XX_2=y
|
||||
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
|
||||
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
|
||||
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
|
||||
# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
|
||||
CONFIG_SCSI_SYM53C8XX_MMIO=y
|
||||
# CONFIG_SCSI_IPR is not set
|
||||
# CONFIG_SCSI_ZALON is not set
|
||||
CONFIG_SCSI_ZALON=y
|
||||
CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
|
||||
CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
|
||||
CONFIG_SCSI_NCR53C8XX_SYNC=40
|
||||
# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
|
||||
# CONFIG_SCSI_PAS16 is not set
|
||||
# CONFIG_SCSI_PSI240I is not set
|
||||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
CONFIG_SCSI_QLA2XXX=y
|
||||
# CONFIG_SCSI_QLA21XX is not set
|
||||
# CONFIG_SCSI_QLA22XX is not set
|
||||
# CONFIG_SCSI_QLA2300 is not set
|
||||
# CONFIG_SCSI_QLA2322 is not set
|
||||
# CONFIG_SCSI_QLA6312 is not set
|
||||
# CONFIG_SCSI_QLA24XX is not set
|
||||
# CONFIG_SCSI_QLA_FC is not set
|
||||
# CONFIG_SCSI_LPFC is not set
|
||||
# CONFIG_SCSI_SIM710 is not set
|
||||
# CONFIG_SCSI_SYM53C416 is not set
|
||||
@@ -397,7 +413,7 @@ CONFIG_NETDEVICES=y
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_MII is not set
|
||||
# CONFIG_LASI_82596 is not set
|
||||
CONFIG_LASI_82596=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
@@ -464,6 +480,7 @@ CONFIG_NET_RADIO=y
|
||||
# Wireless 802.11b ISA/PCI cards support
|
||||
#
|
||||
# CONFIG_HERMES is not set
|
||||
# CONFIG_ATMEL is not set
|
||||
|
||||
#
|
||||
# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
|
||||
@@ -527,7 +544,7 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
|
||||
# CONFIG_KEYBOARD_XTKBD is not set
|
||||
# CONFIG_KEYBOARD_NEWTON is not set
|
||||
# CONFIG_KEYBOARD_HIL_OLD is not set
|
||||
# CONFIG_KEYBOARD_HIL is not set
|
||||
CONFIG_KEYBOARD_HIL=y
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
@@ -535,7 +552,7 @@ CONFIG_MOUSE_PS2=y
|
||||
# CONFIG_MOUSE_LOGIBM is not set
|
||||
# CONFIG_MOUSE_PC110PAD is not set
|
||||
# CONFIG_MOUSE_VSXXXAA is not set
|
||||
# CONFIG_MOUSE_HIL is not set
|
||||
CONFIG_MOUSE_HIL=y
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
CONFIG_INPUT_MISC=y
|
||||
@@ -549,7 +566,8 @@ CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_PARKBD is not set
|
||||
CONFIG_SERIO_GSCPS2=y
|
||||
# CONFIG_HP_SDC is not set
|
||||
CONFIG_HP_SDC=y
|
||||
CONFIG_HIL_MLC=y
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
@@ -569,6 +587,7 @@ CONFIG_HW_CONSOLE=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=13
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
@@ -582,11 +601,10 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
# CONFIG_SERIAL_MUX is not set
|
||||
# CONFIG_PDC_CONSOLE is not set
|
||||
CONFIG_SERIAL_MUX=y
|
||||
CONFIG_SERIAL_MUX_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
@@ -625,6 +643,12 @@ CONFIG_GEN_RTC=y
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
@@ -661,7 +685,6 @@ CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_SOFT_CURSOR=y
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
@@ -671,6 +694,7 @@ CONFIG_FB_SOFT_CURSOR=y
|
||||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_IMSTT is not set
|
||||
CONFIG_FB_STI=y
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_NVIDIA is not set
|
||||
# CONFIG_FB_RIVA is not set
|
||||
# CONFIG_FB_MATROX is not set
|
||||
@@ -683,9 +707,7 @@ CONFIG_FB_STI=y
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_CYBLA is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
@@ -695,6 +717,7 @@ CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_DUMMY_CONSOLE_COLUMNS=160
|
||||
CONFIG_DUMMY_CONSOLE_ROWS=64
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_STI_CONSOLE=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
@@ -713,7 +736,85 @@ CONFIG_LOGO_PARISC_CLUT224=y
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
CONFIG_SOUND=y
|
||||
|
||||
#
|
||||
# Advanced Linux Sound Architecture
|
||||
#
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_TIMER=y
|
||||
CONFIG_SND_PCM=y
|
||||
CONFIG_SND_SEQUENCER=y
|
||||
# CONFIG_SND_SEQ_DUMMY is not set
|
||||
CONFIG_SND_OSSEMUL=y
|
||||
CONFIG_SND_MIXER_OSS=y
|
||||
CONFIG_SND_PCM_OSS=y
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
CONFIG_SND_SUPPORT_OLD_API=y
|
||||
# CONFIG_SND_VERBOSE_PRINTK is not set
|
||||
# CONFIG_SND_DEBUG is not set
|
||||
|
||||
#
|
||||
# Generic devices
|
||||
#
|
||||
# CONFIG_SND_DUMMY is not set
|
||||
# CONFIG_SND_VIRMIDI is not set
|
||||
# CONFIG_SND_MTPAV is not set
|
||||
# CONFIG_SND_SERIAL_U16550 is not set
|
||||
# CONFIG_SND_MPU401 is not set
|
||||
|
||||
#
|
||||
# PCI devices
|
||||
#
|
||||
# CONFIG_SND_AD1889 is not set
|
||||
# CONFIG_SND_ALI5451 is not set
|
||||
# CONFIG_SND_ATIIXP is not set
|
||||
# CONFIG_SND_ATIIXP_MODEM is not set
|
||||
# CONFIG_SND_AU8810 is not set
|
||||
# CONFIG_SND_AU8820 is not set
|
||||
# CONFIG_SND_AU8830 is not set
|
||||
# CONFIG_SND_BT87X is not set
|
||||
# CONFIG_SND_CA0106 is not set
|
||||
# CONFIG_SND_CMIPCI is not set
|
||||
# CONFIG_SND_CS4281 is not set
|
||||
# CONFIG_SND_CS46XX is not set
|
||||
# CONFIG_SND_EMU10K1 is not set
|
||||
# CONFIG_SND_EMU10K1X is not set
|
||||
# CONFIG_SND_ENS1370 is not set
|
||||
# CONFIG_SND_ENS1371 is not set
|
||||
# CONFIG_SND_ES1938 is not set
|
||||
# CONFIG_SND_ES1968 is not set
|
||||
# CONFIG_SND_FM801 is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
# CONFIG_SND_HDSP is not set
|
||||
# CONFIG_SND_HDSPM is not set
|
||||
# CONFIG_SND_ICE1712 is not set
|
||||
# CONFIG_SND_ICE1724 is not set
|
||||
# CONFIG_SND_INTEL8X0 is not set
|
||||
# CONFIG_SND_KORG1212 is not set
|
||||
# CONFIG_SND_MAESTRO3 is not set
|
||||
# CONFIG_SND_MIXART is not set
|
||||
# CONFIG_SND_NM256 is not set
|
||||
# CONFIG_SND_PCXHR is not set
|
||||
# CONFIG_SND_RME32 is not set
|
||||
# CONFIG_SND_RME96 is not set
|
||||
# CONFIG_SND_RME9652 is not set
|
||||
# CONFIG_SND_SONICVIBES is not set
|
||||
# CONFIG_SND_TRIDENT is not set
|
||||
# CONFIG_SND_VIA82XX is not set
|
||||
# CONFIG_SND_VIA82XX_MODEM is not set
|
||||
# CONFIG_SND_VX222 is not set
|
||||
# CONFIG_SND_YMFPCI is not set
|
||||
|
||||
#
|
||||
# GSC devices
|
||||
#
|
||||
CONFIG_SND_HARMONY=y
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
# CONFIG_SOUND_PRIME is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
@@ -722,6 +823,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
@@ -877,18 +982,23 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_MUTEXES is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_IOREMAP is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_RODATA is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
|
@@ -22,10 +22,9 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
.text
|
||||
|
||||
#define ENTRY_NAME(_name_) .word _name_
|
||||
|
||||
.section .rodata,"a"
|
||||
.align 4
|
||||
.export hpux_call_table
|
||||
.import hpux_unimplemented_wrapper
|
||||
|
@@ -408,11 +408,10 @@ static void setup_bus_id(struct parisc_device *padev)
|
||||
|
||||
struct parisc_device * create_tree_node(char id, struct device *parent)
|
||||
{
|
||||
struct parisc_device *dev = kmalloc(sizeof(*dev), GFP_KERNEL);
|
||||
struct parisc_device *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
||||
if (!dev)
|
||||
return NULL;
|
||||
|
||||
memset(dev, 0, sizeof(*dev));
|
||||
dev->hw_path = id;
|
||||
dev->id.hw_type = HPHW_FAULTY;
|
||||
|
||||
|
@@ -48,9 +48,6 @@ EXPORT_SYMBOL(strrchr);
|
||||
EXPORT_SYMBOL(strstr);
|
||||
EXPORT_SYMBOL(strpbrk);
|
||||
|
||||
#include <linux/pm.h>
|
||||
EXPORT_SYMBOL(pm_power_off);
|
||||
|
||||
#include <asm/atomic.h>
|
||||
EXPORT_SYMBOL(__xchg8);
|
||||
EXPORT_SYMBOL(__xchg32);
|
||||
|
@@ -47,18 +47,17 @@
|
||||
* this makes the boot time much longer than necessary.
|
||||
* 20ms seems to work for all the HP PCI implementations to date.
|
||||
*
|
||||
* XXX: turn into a #defined constant in <asm/pci.h> ?
|
||||
* #define pci_post_reset_delay 50
|
||||
*/
|
||||
int pci_post_reset_delay = 50;
|
||||
|
||||
struct pci_port_ops *pci_port;
|
||||
struct pci_bios_ops *pci_bios;
|
||||
struct pci_port_ops *pci_port __read_mostly;
|
||||
struct pci_bios_ops *pci_bios __read_mostly;
|
||||
|
||||
int pci_hba_count = 0;
|
||||
static int pci_hba_count __read_mostly;
|
||||
|
||||
/* parisc_pci_hba used by pci_port->in/out() ops to lookup bus data. */
|
||||
#define PCI_HBA_MAX 32
|
||||
struct pci_hba_data *parisc_pci_hba[PCI_HBA_MAX];
|
||||
static struct pci_hba_data *parisc_pci_hba[PCI_HBA_MAX] __read_mostly;
|
||||
|
||||
|
||||
/********************************************************************
|
||||
@@ -259,8 +258,10 @@ void __devinit pcibios_resource_to_bus(struct pci_dev *dev,
|
||||
void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
|
||||
struct pci_bus_region *region)
|
||||
{
|
||||
#ifdef CONFIG_64BIT
|
||||
struct pci_bus *bus = dev->bus;
|
||||
struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data);
|
||||
#endif
|
||||
|
||||
if (res->flags & IORESOURCE_MEM) {
|
||||
res->start = PCI_HOST_ADDR(hba, region->start);
|
||||
|
@@ -68,20 +68,20 @@ struct rdr_tbl_ent {
|
||||
};
|
||||
|
||||
static int perf_processor_interface __read_mostly = UNKNOWN_INTF;
|
||||
static int perf_enabled __read_mostly = 0;
|
||||
static int perf_enabled __read_mostly;
|
||||
static spinlock_t perf_lock;
|
||||
struct parisc_device *cpu_device __read_mostly = NULL;
|
||||
struct parisc_device *cpu_device __read_mostly;
|
||||
|
||||
/* RDRs to write for PCX-W */
|
||||
static int perf_rdrs_W[] =
|
||||
static const int perf_rdrs_W[] =
|
||||
{ 0, 1, 4, 5, 6, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, -1 };
|
||||
|
||||
/* RDRs to write for PCX-U */
|
||||
static int perf_rdrs_U[] =
|
||||
static const int perf_rdrs_U[] =
|
||||
{ 0, 1, 4, 5, 6, 7, 16, 17, 18, 20, 21, 22, 23, 24, 25, -1 };
|
||||
|
||||
/* RDR register descriptions for PCX-W */
|
||||
static struct rdr_tbl_ent perf_rdr_tbl_W[] = {
|
||||
static const struct rdr_tbl_ent perf_rdr_tbl_W[] = {
|
||||
{ 19, 1, 8 }, /* RDR 0 */
|
||||
{ 16, 1, 16 }, /* RDR 1 */
|
||||
{ 72, 2, 0 }, /* RDR 2 */
|
||||
@@ -117,7 +117,7 @@ static struct rdr_tbl_ent perf_rdr_tbl_W[] = {
|
||||
};
|
||||
|
||||
/* RDR register descriptions for PCX-U */
|
||||
static struct rdr_tbl_ent perf_rdr_tbl_U[] = {
|
||||
static const struct rdr_tbl_ent perf_rdr_tbl_U[] = {
|
||||
{ 19, 1, 8 }, /* RDR 0 */
|
||||
{ 32, 1, 16 }, /* RDR 1 */
|
||||
{ 20, 1, 0 }, /* RDR 2 */
|
||||
@@ -156,7 +156,7 @@ static struct rdr_tbl_ent perf_rdr_tbl_U[] = {
|
||||
* A non-zero write_control in the above tables is a byte offset into
|
||||
* this array.
|
||||
*/
|
||||
static uint64_t perf_bitmasks[] = {
|
||||
static const uint64_t perf_bitmasks[] = {
|
||||
0x0000000000000000ul, /* first dbl word must be zero */
|
||||
0xfdffe00000000000ul, /* RDR0 bitmask */
|
||||
0x003f000000000000ul, /* RDR1 bitmask */
|
||||
@@ -173,7 +173,7 @@ static uint64_t perf_bitmasks[] = {
|
||||
* Write control bitmasks for Pa-8700 processor given
|
||||
* somethings have changed slightly.
|
||||
*/
|
||||
static uint64_t perf_bitmasks_piranha[] = {
|
||||
static const uint64_t perf_bitmasks_piranha[] = {
|
||||
0x0000000000000000ul, /* first dbl word must be zero */
|
||||
0xfdffe00000000000ul, /* RDR0 bitmask */
|
||||
0x003f000000000000ul, /* RDR1 bitmask */
|
||||
@@ -186,7 +186,7 @@ static uint64_t perf_bitmasks_piranha[] = {
|
||||
0xfffc000000000000ul
|
||||
};
|
||||
|
||||
static uint64_t *bitmask_array; /* array of bitmasks to use */
|
||||
static const uint64_t *bitmask_array; /* array of bitmasks to use */
|
||||
|
||||
/******************************************************************************
|
||||
* Function Prototypes
|
||||
@@ -200,7 +200,7 @@ static ssize_t perf_write(struct file *file, const char __user *buf, size_t coun
|
||||
static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
|
||||
static void perf_start_counters(void);
|
||||
static int perf_stop_counters(uint32_t *raddr);
|
||||
static struct rdr_tbl_ent * perf_rdr_get_entry(uint32_t rdr_num);
|
||||
static const struct rdr_tbl_ent * perf_rdr_get_entry(uint32_t rdr_num);
|
||||
static int perf_rdr_read_ubuf(uint32_t rdr_num, uint64_t *buffer);
|
||||
static int perf_rdr_clear(uint32_t rdr_num);
|
||||
static int perf_write_image(uint64_t *memaddr);
|
||||
@@ -444,7 +444,6 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
uint32_t raddr[4];
|
||||
int error = 0;
|
||||
|
||||
lock_kernel();
|
||||
switch (cmd) {
|
||||
|
||||
case PA_PERF_ON:
|
||||
@@ -477,8 +476,6 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
error = -ENOTTY;
|
||||
}
|
||||
|
||||
unlock_kernel();
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
@@ -655,7 +652,7 @@ static int perf_stop_counters(uint32_t *raddr)
|
||||
* Retrieve a pointer to the description of what this
|
||||
* RDR contains.
|
||||
*/
|
||||
static struct rdr_tbl_ent * perf_rdr_get_entry(uint32_t rdr_num)
|
||||
static const struct rdr_tbl_ent * perf_rdr_get_entry(uint32_t rdr_num)
|
||||
{
|
||||
if (perf_processor_interface == ONYX_INTF) {
|
||||
return &perf_rdr_tbl_U[rdr_num];
|
||||
@@ -673,7 +670,7 @@ static int perf_rdr_read_ubuf(uint32_t rdr_num, uint64_t *buffer)
|
||||
{
|
||||
uint64_t data, data_mask = 0;
|
||||
uint32_t width, xbits, i;
|
||||
struct rdr_tbl_ent *tentry;
|
||||
const struct rdr_tbl_ent *tentry;
|
||||
|
||||
tentry = perf_rdr_get_entry(rdr_num);
|
||||
if ((width = tentry->width) == 0)
|
||||
@@ -721,7 +718,7 @@ static int perf_rdr_read_ubuf(uint32_t rdr_num, uint64_t *buffer)
|
||||
*/
|
||||
static int perf_rdr_clear(uint32_t rdr_num)
|
||||
{
|
||||
struct rdr_tbl_ent *tentry;
|
||||
const struct rdr_tbl_ent *tentry;
|
||||
int32_t i;
|
||||
|
||||
tentry = perf_rdr_get_entry(rdr_num);
|
||||
@@ -753,10 +750,11 @@ static int perf_write_image(uint64_t *memaddr)
|
||||
uint64_t buffer[MAX_RDR_WORDS];
|
||||
uint64_t *bptr;
|
||||
uint32_t dwords;
|
||||
uint32_t *intrigue_rdr;
|
||||
uint64_t *intrigue_bitmask, tmp64;
|
||||
const uint32_t *intrigue_rdr;
|
||||
const uint64_t *intrigue_bitmask;
|
||||
uint64_t tmp64;
|
||||
void __iomem *runway;
|
||||
struct rdr_tbl_ent *tentry;
|
||||
const struct rdr_tbl_ent *tentry;
|
||||
int i;
|
||||
|
||||
/* Clear out counters */
|
||||
@@ -830,7 +828,7 @@ static int perf_write_image(uint64_t *memaddr)
|
||||
*/
|
||||
static void perf_rdr_write(uint32_t rdr_num, uint64_t *buffer)
|
||||
{
|
||||
struct rdr_tbl_ent *tentry;
|
||||
const struct rdr_tbl_ent *tentry;
|
||||
int32_t i;
|
||||
|
||||
printk("perf_rdr_write\n");
|
||||
|
@@ -25,7 +25,7 @@
|
||||
|
||||
#define PCXU_IMAGE_SIZE 584
|
||||
|
||||
static uint32_t onyx_images[][PCXU_IMAGE_SIZE/sizeof(uint32_t)] = {
|
||||
static uint32_t onyx_images[][PCXU_IMAGE_SIZE/sizeof(uint32_t)] __read_mostly = {
|
||||
/*
|
||||
* CPI:
|
||||
*
|
||||
@@ -2093,7 +2093,7 @@ static uint32_t onyx_images[][PCXU_IMAGE_SIZE/sizeof(uint32_t)] = {
|
||||
};
|
||||
#define PCXW_IMAGE_SIZE 576
|
||||
|
||||
static uint32_t cuda_images[][PCXW_IMAGE_SIZE/sizeof(uint32_t)] = {
|
||||
static uint32_t cuda_images[][PCXW_IMAGE_SIZE/sizeof(uint32_t)] __read_mostly = {
|
||||
/*
|
||||
* CPI: FROM CPI.IDF (Image 0)
|
||||
*
|
||||
|
@@ -54,27 +54,6 @@
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/unwind.h>
|
||||
|
||||
static int hlt_counter __read_mostly;
|
||||
|
||||
/*
|
||||
* Power off function, if any
|
||||
*/
|
||||
void (*pm_power_off)(void);
|
||||
|
||||
void disable_hlt(void)
|
||||
{
|
||||
hlt_counter++;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(disable_hlt);
|
||||
|
||||
void enable_hlt(void)
|
||||
{
|
||||
hlt_counter--;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(enable_hlt);
|
||||
|
||||
void default_idle(void)
|
||||
{
|
||||
barrier();
|
||||
@@ -102,12 +81,7 @@ void cpu_idle(void)
|
||||
}
|
||||
|
||||
|
||||
#ifdef __LP64__
|
||||
#define COMMAND_GLOBAL 0xfffffffffffe0030UL
|
||||
#else
|
||||
#define COMMAND_GLOBAL 0xfffe0030
|
||||
#endif
|
||||
|
||||
#define COMMAND_GLOBAL F_EXTEND(0xfffe0030)
|
||||
#define CMD_RESET 5 /* reset any module */
|
||||
|
||||
/*
|
||||
@@ -162,6 +136,7 @@ void machine_halt(void)
|
||||
*/
|
||||
}
|
||||
|
||||
void (*chassis_power_off)(void);
|
||||
|
||||
/*
|
||||
* This routine is called from sys_reboot to actually turn off the
|
||||
@@ -170,8 +145,8 @@ void machine_halt(void)
|
||||
void machine_power_off(void)
|
||||
{
|
||||
/* If there is a registered power off handler, call it. */
|
||||
if(pm_power_off)
|
||||
pm_power_off();
|
||||
if (chassis_power_off)
|
||||
chassis_power_off();
|
||||
|
||||
/* Put the soft power button back under hardware control.
|
||||
* If the user had already pressed the power button, the
|
||||
@@ -187,6 +162,8 @@ void machine_power_off(void)
|
||||
KERN_EMERG "Please power this system off now.");
|
||||
}
|
||||
|
||||
void (*pm_power_off)(void) = machine_power_off;
|
||||
EXPORT_SYMBOL(pm_power_off);
|
||||
|
||||
/*
|
||||
* Create a kernel thread
|
||||
|
@@ -91,7 +91,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
int copied;
|
||||
|
||||
#ifdef __LP64__
|
||||
if (is_compat_task(child)) {
|
||||
if (personality(child->personality) == PER_LINUX32) {
|
||||
unsigned int tmp;
|
||||
|
||||
addr &= 0xffffffffL;
|
||||
@@ -123,7 +123,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
case PTRACE_POKEDATA:
|
||||
ret = 0;
|
||||
#ifdef __LP64__
|
||||
if (is_compat_task(child)) {
|
||||
if (personality(child->personality) == PER_LINUX32) {
|
||||
unsigned int tmp = (unsigned int)data;
|
||||
DBG("sys_ptrace(POKE%s, %d, %lx, %lx)\n",
|
||||
request == PTRACE_POKETEXT ? "TEXT" : "DATA",
|
||||
@@ -146,7 +146,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
case PTRACE_PEEKUSR: {
|
||||
ret = -EIO;
|
||||
#ifdef __LP64__
|
||||
if (is_compat_task(child)) {
|
||||
if (personality(child->personality) == PER_LINUX32) {
|
||||
unsigned int tmp;
|
||||
|
||||
if (addr & (sizeof(int)-1))
|
||||
@@ -205,7 +205,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
goto out_tsk;
|
||||
}
|
||||
#ifdef __LP64__
|
||||
if (is_compat_task(child)) {
|
||||
if (personality(child->personality) == PER_LINUX32) {
|
||||
if (addr & (sizeof(int)-1))
|
||||
goto out_tsk;
|
||||
if ((addr = translate_usr_offset(addr)) < 0)
|
||||
|
@@ -317,7 +317,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
||||
|
||||
if(personality(current->personality) == PER_LINUX32) {
|
||||
DBG(1,"setup_rt_frame: frame->info = 0x%p\n", &compat_frame->info);
|
||||
err |= compat_copy_siginfo_to_user(&compat_frame->info, info);
|
||||
err |= copy_siginfo_to_user32(&compat_frame->info, info);
|
||||
DBG(1,"SETUP_RT_FRAME: 1\n");
|
||||
compat_val = (compat_int_t)current->sas_ss_sp;
|
||||
err |= __put_user(compat_val, &compat_frame->uc.uc_stack.ss_sp);
|
||||
|
@@ -31,7 +31,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/errno.h>
|
||||
|
||||
#include <asm/compat_signal.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
#include "signal32.h"
|
||||
@@ -398,3 +397,104 @@ setup_sigcontext32(struct compat_sigcontext __user *sc, struct compat_regfile __
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int
|
||||
copy_siginfo_from_user32 (siginfo_t *to, compat_siginfo_t __user *from)
|
||||
{
|
||||
unsigned long tmp;
|
||||
int err;
|
||||
|
||||
if (!access_ok(VERIFY_READ, from, sizeof(compat_siginfo_t)))
|
||||
return -EFAULT;
|
||||
|
||||
err = __get_user(to->si_signo, &from->si_signo);
|
||||
err |= __get_user(to->si_errno, &from->si_errno);
|
||||
err |= __get_user(to->si_code, &from->si_code);
|
||||
|
||||
if (to->si_code < 0)
|
||||
err |= __copy_from_user(&to->_sifields._pad, &from->_sifields._pad, SI_PAD_SIZE);
|
||||
else {
|
||||
switch (to->si_code >> 16) {
|
||||
case __SI_CHLD >> 16:
|
||||
err |= __get_user(to->si_utime, &from->si_utime);
|
||||
err |= __get_user(to->si_stime, &from->si_stime);
|
||||
err |= __get_user(to->si_status, &from->si_status);
|
||||
default:
|
||||
err |= __get_user(to->si_pid, &from->si_pid);
|
||||
err |= __get_user(to->si_uid, &from->si_uid);
|
||||
break;
|
||||
case __SI_FAULT >> 16:
|
||||
err |= __get_user(tmp, &from->si_addr);
|
||||
to->si_addr = (void __user *) tmp;
|
||||
break;
|
||||
case __SI_POLL >> 16:
|
||||
err |= __get_user(to->si_band, &from->si_band);
|
||||
err |= __get_user(to->si_fd, &from->si_fd);
|
||||
break;
|
||||
case __SI_RT >> 16: /* This is not generated by the kernel as of now. */
|
||||
case __SI_MESGQ >> 16:
|
||||
err |= __get_user(to->si_pid, &from->si_pid);
|
||||
err |= __get_user(to->si_uid, &from->si_uid);
|
||||
err |= __get_user(to->si_int, &from->si_int);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int
|
||||
copy_siginfo_to_user32 (compat_siginfo_t __user *to, siginfo_t *from)
|
||||
{
|
||||
unsigned int addr;
|
||||
int err;
|
||||
|
||||
if (!access_ok(VERIFY_WRITE, to, sizeof(compat_siginfo_t)))
|
||||
return -EFAULT;
|
||||
|
||||
/* If you change siginfo_t structure, please be sure
|
||||
this code is fixed accordingly.
|
||||
It should never copy any pad contained in the structure
|
||||
to avoid security leaks, but must copy the generic
|
||||
3 ints plus the relevant union member.
|
||||
This routine must convert siginfo from 64bit to 32bit as well
|
||||
at the same time. */
|
||||
err = __put_user(from->si_signo, &to->si_signo);
|
||||
err |= __put_user(from->si_errno, &to->si_errno);
|
||||
err |= __put_user((short)from->si_code, &to->si_code);
|
||||
if (from->si_code < 0)
|
||||
err |= __copy_to_user(&to->_sifields._pad, &from->_sifields._pad, SI_PAD_SIZE);
|
||||
else {
|
||||
switch (from->si_code >> 16) {
|
||||
case __SI_CHLD >> 16:
|
||||
err |= __put_user(from->si_utime, &to->si_utime);
|
||||
err |= __put_user(from->si_stime, &to->si_stime);
|
||||
err |= __put_user(from->si_status, &to->si_status);
|
||||
default:
|
||||
err |= __put_user(from->si_pid, &to->si_pid);
|
||||
err |= __put_user(from->si_uid, &to->si_uid);
|
||||
break;
|
||||
case __SI_FAULT >> 16:
|
||||
/* avoid type-checking warnings by copying _pad[0] in lieu of si_addr... */
|
||||
err |= __put_user(from->_sifields._pad[0], &to->si_addr);
|
||||
break;
|
||||
case __SI_POLL >> 16:
|
||||
err |= __put_user(from->si_band, &to->si_band);
|
||||
err |= __put_user(from->si_fd, &to->si_fd);
|
||||
break;
|
||||
case __SI_TIMER >> 16:
|
||||
err |= __put_user(from->si_tid, &to->si_tid);
|
||||
err |= __put_user(from->si_overrun, &to->si_overrun);
|
||||
addr = (unsigned long) from->si_ptr;
|
||||
err |= __put_user(addr, &to->si_ptr);
|
||||
break;
|
||||
case __SI_RT >> 16: /* Not generated by the kernel as of now. */
|
||||
case __SI_MESGQ >> 16:
|
||||
err |= __put_user(from->si_uid, &to->si_uid);
|
||||
err |= __put_user(from->si_pid, &to->si_pid);
|
||||
addr = (unsigned long) from->si_ptr;
|
||||
err |= __put_user(addr, &to->si_ptr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
@@ -20,8 +20,34 @@
|
||||
#define _PARISC64_KERNEL_SIGNAL32_H
|
||||
|
||||
#include <linux/compat.h>
|
||||
#include <asm/compat_signal.h>
|
||||
#include <asm/compat_rt_sigframe.h>
|
||||
|
||||
typedef compat_uptr_t compat_sighandler_t;
|
||||
|
||||
typedef struct compat_sigaltstack {
|
||||
compat_uptr_t ss_sp;
|
||||
compat_int_t ss_flags;
|
||||
compat_size_t ss_size;
|
||||
} compat_stack_t;
|
||||
|
||||
/* Most things should be clean enough to redefine this at will, if care
|
||||
is taken to make libc match. */
|
||||
|
||||
struct compat_sigaction {
|
||||
compat_sighandler_t sa_handler;
|
||||
compat_uint_t sa_flags;
|
||||
compat_sigset_t sa_mask; /* mask last for extensibility */
|
||||
};
|
||||
|
||||
/* 32-bit ucontext as seen from an 64-bit kernel */
|
||||
struct compat_ucontext {
|
||||
compat_uint_t uc_flags;
|
||||
compat_uptr_t uc_link;
|
||||
compat_stack_t uc_stack; /* struct compat_sigaltstack (12 bytes)*/
|
||||
/* FIXME: Pad out to get uc_mcontext to start at an 8-byte aligned boundary */
|
||||
compat_uint_t pad[1];
|
||||
struct compat_sigcontext uc_mcontext;
|
||||
compat_sigset_t uc_sigmask; /* mask last for extensibility */
|
||||
};
|
||||
|
||||
/* ELF32 signal handling */
|
||||
|
||||
@@ -29,6 +55,103 @@ struct k_sigaction32 {
|
||||
struct compat_sigaction sa;
|
||||
};
|
||||
|
||||
typedef struct compat_siginfo {
|
||||
int si_signo;
|
||||
int si_errno;
|
||||
int si_code;
|
||||
|
||||
union {
|
||||
int _pad[((128/sizeof(int)) - 3)];
|
||||
|
||||
/* kill() */
|
||||
struct {
|
||||
unsigned int _pid; /* sender's pid */
|
||||
unsigned int _uid; /* sender's uid */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers */
|
||||
struct {
|
||||
compat_timer_t _tid; /* timer id */
|
||||
int _overrun; /* overrun count */
|
||||
char _pad[sizeof(unsigned int) - sizeof(int)];
|
||||
compat_sigval_t _sigval; /* same as below */
|
||||
int _sys_private; /* not to be passed to user */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals */
|
||||
struct {
|
||||
unsigned int _pid; /* sender's pid */
|
||||
unsigned int _uid; /* sender's uid */
|
||||
compat_sigval_t _sigval;
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD */
|
||||
struct {
|
||||
unsigned int _pid; /* which child */
|
||||
unsigned int _uid; /* sender's uid */
|
||||
int _status; /* exit code */
|
||||
compat_clock_t _utime;
|
||||
compat_clock_t _stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
|
||||
struct {
|
||||
unsigned int _addr; /* faulting insn/memory ref. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL */
|
||||
struct {
|
||||
int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
|
||||
int _fd;
|
||||
} _sigpoll;
|
||||
} _sifields;
|
||||
} compat_siginfo_t;
|
||||
|
||||
int copy_siginfo_to_user32 (compat_siginfo_t __user *to, siginfo_t *from);
|
||||
int copy_siginfo_from_user32 (siginfo_t *to, compat_siginfo_t __user *from);
|
||||
|
||||
/* In a deft move of uber-hackery, we decide to carry the top half of all
|
||||
* 64-bit registers in a non-portable, non-ABI, hidden structure.
|
||||
* Userspace can read the hidden structure if it *wants* but is never
|
||||
* guaranteed to be in the same place. Infact the uc_sigmask from the
|
||||
* ucontext_t structure may push the hidden register file downards
|
||||
*/
|
||||
struct compat_regfile {
|
||||
/* Upper half of all the 64-bit registers that were truncated
|
||||
on a copy to a 32-bit userspace */
|
||||
compat_int_t rf_gr[32];
|
||||
compat_int_t rf_iasq[2];
|
||||
compat_int_t rf_iaoq[2];
|
||||
compat_int_t rf_sar;
|
||||
};
|
||||
|
||||
#define COMPAT_SIGRETURN_TRAMP 4
|
||||
#define COMPAT_SIGRESTARTBLOCK_TRAMP 5
|
||||
#define COMPAT_TRAMP_SIZE (COMPAT_SIGRETURN_TRAMP + \
|
||||
COMPAT_SIGRESTARTBLOCK_TRAMP)
|
||||
|
||||
struct compat_rt_sigframe {
|
||||
/* XXX: Must match trampoline size in arch/parisc/kernel/signal.c
|
||||
Secondary to that it must protect the ERESTART_RESTARTBLOCK
|
||||
trampoline we left on the stack (we were bad and didn't
|
||||
change sp so we could run really fast.) */
|
||||
compat_uint_t tramp[COMPAT_TRAMP_SIZE];
|
||||
compat_siginfo_t info;
|
||||
struct compat_ucontext uc;
|
||||
/* Hidden location of truncated registers, *must* be last. */
|
||||
struct compat_regfile regs;
|
||||
};
|
||||
|
||||
/*
|
||||
* The 32-bit ABI wants at least 48 bytes for a function call frame:
|
||||
* 16 bytes for arg0-arg3, and 32 bytes for magic (the only part of
|
||||
* which Linux/parisc uses is sp-20 for the saved return pointer...)
|
||||
* Then, the stack pointer must be rounded to a cache line (64 bytes).
|
||||
*/
|
||||
#define SIGFRAME32 64
|
||||
#define FUNCTIONCALLFRAME32 48
|
||||
#define PARISC_RT_SIGFRAME_SIZE32 (((sizeof(struct compat_rt_sigframe) + FUNCTIONCALLFRAME32) + SIGFRAME32) & -SIGFRAME32)
|
||||
|
||||
void sigset_32to64(sigset_t *s64, compat_sigset_t *s32);
|
||||
void sigset_64to32(compat_sigset_t *s32, sigset_t *s64);
|
||||
int do_sigaltstack32 (const compat_stack_t __user *uss32,
|
||||
|
@@ -650,6 +650,8 @@ end_linux_gateway_page:
|
||||
#define LWS_ENTRY(_name_) .word (lws_##_name_ - linux_gateway_page)
|
||||
#endif
|
||||
|
||||
.section .rodata,"a"
|
||||
|
||||
.align 4096
|
||||
/* Light-weight-syscall table */
|
||||
/* Start of lws table. */
|
||||
|
@@ -374,5 +374,24 @@
|
||||
ENTRY_SAME(keyctl)
|
||||
ENTRY_SAME(ioprio_set)
|
||||
ENTRY_SAME(ioprio_get)
|
||||
ENTRY_SAME(inotify_init)
|
||||
ENTRY_SAME(inotify_add_watch) /* 270 */
|
||||
ENTRY_SAME(inotify_rm_watch)
|
||||
ENTRY_COMP(pselect6)
|
||||
ENTRY_COMP(ppoll)
|
||||
ENTRY_SAME(migrate_pages)
|
||||
ENTRY_COMP(openat) /* 275 */
|
||||
ENTRY_SAME(mkdirat)
|
||||
ENTRY_SAME(mknodat)
|
||||
ENTRY_SAME(fchownat)
|
||||
ENTRY_COMP(futimesat)
|
||||
ENTRY_COMP(newfstatat) /* 280 */
|
||||
ENTRY_SAME(unlinkat)
|
||||
ENTRY_SAME(renameat)
|
||||
ENTRY_SAME(linkat)
|
||||
ENTRY_SAME(symlinkat)
|
||||
ENTRY_SAME(readlinkat) /* 285 */
|
||||
ENTRY_SAME(fchmodat)
|
||||
ENTRY_SAME(faccessat)
|
||||
/* Nothing yet */
|
||||
|
||||
|
@@ -193,10 +193,9 @@ void show_stack(struct task_struct *task, unsigned long *s)
|
||||
|
||||
HERE:
|
||||
asm volatile ("copy %%r30, %0" : "=r"(sp));
|
||||
r = (struct pt_regs *)kmalloc(sizeof(struct pt_regs), GFP_KERNEL);
|
||||
r = kzalloc(sizeof(struct pt_regs), GFP_KERNEL);
|
||||
if (!r)
|
||||
return;
|
||||
memset(r, 0, sizeof(struct pt_regs));
|
||||
r->iaoq[0] = (unsigned long)&&HERE;
|
||||
r->gr[2] = (unsigned long)__builtin_return_address(0);
|
||||
r->gr[30] = sp;
|
||||
|
@@ -337,6 +337,7 @@ decode_fpu(unsigned int Fpu_register[], unsigned int trap_counts[])
|
||||
}
|
||||
break;
|
||||
case INVALIDEXCEPTION:
|
||||
case OPC_2E_INVALIDEXCEPTION:
|
||||
update_trap_counts(Fpu_register, aflags, bflags, trap_counts);
|
||||
return SIGNALCODE(SIGFPE, FPE_FLTINV);
|
||||
case DIVISIONBYZEROEXCEPTION:
|
||||
|
@@ -371,17 +371,11 @@ static void __init setup_bootmem(void)
|
||||
|
||||
void free_initmem(void)
|
||||
{
|
||||
/* FIXME: */
|
||||
#if 0
|
||||
printk(KERN_INFO "NOT FREEING INITMEM (%dk)\n",
|
||||
(&__init_end - &__init_begin) >> 10);
|
||||
return;
|
||||
#else
|
||||
unsigned long addr;
|
||||
|
||||
printk(KERN_INFO "Freeing unused kernel memory: ");
|
||||
|
||||
#if 1
|
||||
#ifdef CONFIG_DEBUG_KERNEL
|
||||
/* Attempt to catch anyone trying to execute code here
|
||||
* by filling the page with BRK insns.
|
||||
*
|
||||
@@ -414,9 +408,21 @@ void free_initmem(void)
|
||||
pdc_chassis_send_status(PDC_CHASSIS_DIRECT_BCOMPLETE);
|
||||
|
||||
printk("%luk freed\n", (unsigned long)(&__init_end - &__init_begin) >> 10);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_DEBUG_RODATA
|
||||
void mark_rodata_ro(void)
|
||||
{
|
||||
extern char __start_rodata, __end_rodata;
|
||||
/* rodata memory was already mapped with KERNEL_RO access rights by
|
||||
pagetable_init() and map_pages(). No need to do additional stuff here */
|
||||
printk (KERN_INFO "Write protecting the kernel read-only data: %luk\n",
|
||||
(unsigned long)(&__end_rodata - &__start_rodata) >> 10);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Just an arbitrary offset to serve as a "hole" between mapping areas
|
||||
* (between top of physical memory and a potential pcxl dma mapping
|
||||
@@ -477,11 +483,6 @@ void __init mem_init(void)
|
||||
|
||||
}
|
||||
|
||||
int do_check_pgt_cache(int low, int high)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long *empty_zero_page __read_mostly;
|
||||
|
||||
void show_mem(void)
|
||||
@@ -690,7 +691,7 @@ static void __init pagetable_init(void)
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_end && initrd_end > mem_limit) {
|
||||
printk("initrd: mapping %08lx-%08lx\n", initrd_start, initrd_end);
|
||||
printk(KERN_INFO "initrd: mapping %08lx-%08lx\n", initrd_start, initrd_end);
|
||||
map_pages(initrd_start, __pa(initrd_start),
|
||||
initrd_end - initrd_start, PAGE_KERNEL);
|
||||
}
|
||||
@@ -792,8 +793,6 @@ map_hpux_gateway_page(struct task_struct *tsk, struct mm_struct *mm)
|
||||
EXPORT_SYMBOL(map_hpux_gateway_page);
|
||||
#endif
|
||||
|
||||
extern void flush_tlb_all_local(void);
|
||||
|
||||
void __init paging_init(void)
|
||||
{
|
||||
int i;
|
||||
@@ -802,7 +801,7 @@ void __init paging_init(void)
|
||||
pagetable_init();
|
||||
gateway_init();
|
||||
flush_cache_all_local(); /* start with known state */
|
||||
flush_tlb_all_local();
|
||||
flush_tlb_all_local(NULL);
|
||||
|
||||
for (i = 0; i < npmem_ranges; i++) {
|
||||
unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0 };
|
||||
@@ -993,7 +992,7 @@ void flush_tlb_all(void)
|
||||
do_recycle++;
|
||||
}
|
||||
spin_unlock(&sid_lock);
|
||||
on_each_cpu((void (*)(void *))flush_tlb_all_local, NULL, 1, 1);
|
||||
on_each_cpu(flush_tlb_all_local, NULL, 1, 1);
|
||||
if (do_recycle) {
|
||||
spin_lock(&sid_lock);
|
||||
recycle_sids(recycle_ndirty,recycle_dirty_array);
|
||||
|
Reference in New Issue
Block a user