Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
89a2fa5f
Commit
89a2fa5f
authored
Feb 03, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6
parents
27266a18
68ee3eb8
Changes
40
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
904 additions
and
328 deletions
+904
-328
arch/parisc/Kconfig
arch/parisc/Kconfig
+13
-7
arch/parisc/Kconfig.debug
arch/parisc/Kconfig.debug
+10
-0
arch/parisc/configs/b180_defconfig
arch/parisc/configs/b180_defconfig
+146
-36
arch/parisc/hpux/entry_hpux.S
arch/parisc/hpux/entry_hpux.S
+1
-2
arch/parisc/kernel/drivers.c
arch/parisc/kernel/drivers.c
+1
-2
arch/parisc/kernel/parisc_ksyms.c
arch/parisc/kernel/parisc_ksyms.c
+0
-3
arch/parisc/kernel/pci.c
arch/parisc/kernel/pci.c
+7
-6
arch/parisc/kernel/perf.c
arch/parisc/kernel/perf.c
+18
-20
arch/parisc/kernel/perf_images.h
arch/parisc/kernel/perf_images.h
+2
-2
arch/parisc/kernel/process.c
arch/parisc/kernel/process.c
+6
-29
arch/parisc/kernel/ptrace.c
arch/parisc/kernel/ptrace.c
+4
-4
arch/parisc/kernel/signal.c
arch/parisc/kernel/signal.c
+1
-1
arch/parisc/kernel/signal32.c
arch/parisc/kernel/signal32.c
+101
-1
arch/parisc/kernel/signal32.h
arch/parisc/kernel/signal32.h
+125
-2
arch/parisc/kernel/syscall.S
arch/parisc/kernel/syscall.S
+2
-0
arch/parisc/kernel/syscall_table.S
arch/parisc/kernel/syscall_table.S
+19
-0
arch/parisc/kernel/traps.c
arch/parisc/kernel/traps.c
+1
-2
arch/parisc/math-emu/decode_exc.c
arch/parisc/math-emu/decode_exc.c
+1
-0
arch/parisc/mm/init.c
arch/parisc/mm/init.c
+17
-18
drivers/parisc/ccio-dma.c
drivers/parisc/ccio-dma.c
+3
-4
drivers/parisc/dino.c
drivers/parisc/dino.c
+1
-3
drivers/parisc/hppb.c
drivers/parisc/hppb.c
+1
-2
drivers/parisc/iosapic.c
drivers/parisc/iosapic.c
+2
-6
drivers/parisc/lasi.c
drivers/parisc/lasi.c
+3
-2
drivers/parisc/lba_pci.c
drivers/parisc/lba_pci.c
+2
-4
drivers/parisc/pdc_stable.c
drivers/parisc/pdc_stable.c
+262
-94
drivers/parisc/sba_iommu.c
drivers/parisc/sba_iommu.c
+1
-2
drivers/parisc/superio.c
drivers/parisc/superio.c
+22
-19
drivers/parisc/wax.c
drivers/parisc/wax.c
+1
-1
drivers/parport/parport_gsc.c
drivers/parport/parport_gsc.c
+1
-1
drivers/video/console/sticore.c
drivers/video/console/sticore.c
+19
-26
include/asm-parisc/atomic.h
include/asm-parisc/atomic.h
+69
-15
include/asm-parisc/cacheflush.h
include/asm-parisc/cacheflush.h
+6
-0
include/asm-parisc/compat_ucontext.h
include/asm-parisc/compat_ucontext.h
+1
-2
include/asm-parisc/grfioctl.h
include/asm-parisc/grfioctl.h
+1
-1
include/asm-parisc/pci.h
include/asm-parisc/pci.h
+13
-4
include/asm-parisc/pgalloc.h
include/asm-parisc/pgalloc.h
+0
-1
include/asm-parisc/pgtable.h
include/asm-parisc/pgtable.h
+1
-1
include/asm-parisc/rt_sigframe.h
include/asm-parisc/rt_sigframe.h
+0
-4
include/asm-parisc/unistd.h
include/asm-parisc/unistd.h
+20
-1
No files found.
arch/parisc/Kconfig
View file @
89a2fa5f
...
...
@@ -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"
...
...
arch/parisc/Kconfig.debug
View file @
89a2fa5f
...
...
@@ -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
arch/parisc/configs/b180_defconfig
View file @
89a2fa5f
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.1
4-rc5-pa1
#
Fri Oct 21 23:06:10 2005
# Linux kernel version: 2.6.1
6-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
...
...
arch/parisc/hpux/entry_hpux.S
View file @
89a2fa5f
...
...
@@ -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
...
...
arch/parisc/kernel/drivers.c
View file @
89a2fa5f
...
...
@@ -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
=
k
m
alloc
(
sizeof
(
*
dev
),
GFP_KERNEL
);
struct
parisc_device
*
dev
=
k
z
alloc
(
sizeof
(
*
dev
),
GFP_KERNEL
);
if
(
!
dev
)
return
NULL
;
memset
(
dev
,
0
,
sizeof
(
*
dev
));
dev
->
hw_path
=
id
;
dev
->
id
.
hw_type
=
HPHW_FAULTY
;
...
...
arch/parisc/kernel/parisc_ksyms.c
View file @
89a2fa5f
...
...
@@ -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
);
...
...
arch/parisc/kernel/pci.c
View file @
89a2fa5f
...
...
@@ -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
st
ruct
pci_hba_data
*
parisc_pci_hba
[
PCI_HBA_MAX
]
;
st
atic
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
);
...
...
arch/parisc/kernel/perf.c
View file @
89a2fa5f
...
...
@@ -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
"
);
...
...
arch/parisc/kernel/perf_images.h
View file @
89a2fa5f
...
...
@@ -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)
*
...
...
arch/parisc/kernel/process.c
View file @
89a2fa5f
...
...
@@ -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
...
...
arch/parisc/kernel/ptrace.c
View file @
89a2fa5f
...
...
@@ -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
)
...
...
arch/parisc/kernel/signal.c
View file @
89a2fa5f
...
...
@@ -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
|=
co
mpat_copy_siginfo_to_user
(
&
compat_frame
->
info
,
info
);
err
|=
co
py_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
);
...
...
arch/parisc/kernel/signal32.c
View file @
89a2fa5f
...
...
@@ -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
;
}
arch/parisc/kernel/signal32.h
View file @
89a2fa5f
...
...
@@ -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
,
...
...
arch/parisc/kernel/syscall.S
View file @
89a2fa5f
...
...
@@ -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
.
*/
...
...
arch/parisc/kernel/syscall_table.S
View file @
89a2fa5f
...
...
@@ -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
*/
arch/parisc/kernel/traps.c
View file @
89a2fa5f
...
...
@@ -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
*
)
km
alloc
(
sizeof
(
struct
pt_regs
),
GFP_KERNEL
);
r
=
kz
alloc
(
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
;
...
...
arch/parisc/math-emu/decode_exc.c
View file @
89a2fa5f
...
...
@@ -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
:
...
...
arch/parisc/mm/init.c
View file @
89a2fa5f
...
...
@@ -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
#if
def 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
);
...
...
drivers/parisc/ccio-dma.c
View file @
89a2fa5f
...
...
@@ -1423,7 +1423,7 @@ static void __init ccio_init_resources(struct ioc *ioc)
struct
resource
*
res
=
ioc
->
mmio_region
;
char
*
name
=
kmalloc
(
14
,
GFP_KERNEL
);
s
printf
(
name
,
"GSC Bus [%d/]"
,
ioc
->
hw_path
);
s
nprintf
(
name
,
14
,
"GSC Bus [%d/]"
,
ioc
->
hw_path
);
ccio_init_resource
(
res
,
name
,
&
ioc
->
ioc_regs
->
io_io_low
);
ccio_init_resource
(
res
+
1
,
name
,
&
ioc
->
ioc_regs
->
io_io_low_hv
);
...
...
@@ -1557,12 +1557,11 @@ static int ccio_probe(struct parisc_device *dev)
int
i
;
struct
ioc
*
ioc
,
**
ioc_p
=
&
ioc_list
;
ioc
=
k
m
alloc
(
sizeof
(
struct
ioc
),
GFP_KERNEL
);
ioc
=
k
z
alloc
(
sizeof
(
struct
ioc
),
GFP_KERNEL
);
if
(
ioc
==
NULL
)
{
printk
(
KERN_ERR
MODULE_NAME
": memory allocation failure
\n
"
);
return
1
;
}
memset
(
ioc
,
0
,
sizeof
(
struct
ioc
));
ioc
->
name
=
dev
->
id
.
hversion
==
U2_IOA_RUNWAY
?
"U2"
:
"UTurn"
;
...
...
@@ -1578,7 +1577,7 @@ static int ccio_probe(struct parisc_device *dev)
ccio_ioc_init
(
ioc
);
ccio_init_resources
(
ioc
);
hppa_dma_ops
=
&
ccio_ops
;
dev
->
dev
.
platform_data
=
k
m
alloc
(
sizeof
(
struct
pci_hba_data
),
GFP_KERNEL
);
dev
->
dev
.
platform_data
=
k
z
alloc
(
sizeof
(
struct
pci_hba_data
),
GFP_KERNEL
);
/* if this fails, no I/O cards will work, so may as well bug */
BUG_ON
(
dev
->
dev
.
platform_data
==
NULL
);
...
...
drivers/parisc/dino.c
View file @
89a2fa5f
...
...
@@ -989,14 +989,12 @@ static int __init dino_probe(struct parisc_device *dev)
*/
}
dino_dev
=
k
m
alloc
(
sizeof
(
struct
dino_device
),
GFP_KERNEL
);
dino_dev
=
k
z
alloc
(
sizeof
(
struct
dino_device
),
GFP_KERNEL
);
if
(
!
dino_dev
)
{
printk
(
"dino_init_chip - couldn't alloc dino_device
\n
"
);
return
1
;
}
memset
(
dino_dev
,
0
,
sizeof
(
struct
dino_device
));
dino_dev
->
hba
.
dev
=
dev
;
dino_dev
->
hba
.
base_addr
=
ioremap
(
hpa
,
4096
);
dino_dev
->
hba
.
lmmio_space_offset
=
0
;
/* CPU addrs == bus addrs */
...
...
drivers/parisc/hppb.c
View file @
89a2fa5f
...
...
@@ -60,12 +60,11 @@ static int hppb_probe(struct parisc_device *dev)
}
if
(
card
->
hpa
)
{
card
->
next
=
k
m
alloc
(
sizeof
(
struct
hppb_card
),
GFP_KERNEL
);
card
->
next
=
k
z
alloc
(
sizeof
(
struct
hppb_card
),
GFP_KERNEL
);
if
(
!
card
->
next
)
{
printk
(
KERN_ERR
"HP-PB: Unable to allocate memory.
\n
"
);
return
1
;
}
memset
(
card
->
next
,
'\0'
,
sizeof
(
struct
hppb_card
));
card
=
card
->
next
;
}
printk
(
KERN_INFO
"Found GeckoBoa at 0x%lx
\n
"
,
dev
->
hpa
.
start
);
...
...
drivers/parisc/iosapic.c
View file @
89a2fa5f
...
...
@@ -873,28 +873,24 @@ void *iosapic_register(unsigned long hpa)
return
NULL
;
}
isi
=
(
struct
iosapic_info
*
)
k
m
alloc
(
sizeof
(
struct
iosapic_info
),
GFP_KERNEL
);
isi
=
(
struct
iosapic_info
*
)
k
z
alloc
(
sizeof
(
struct
iosapic_info
),
GFP_KERNEL
);
if
(
!
isi
)
{
BUG
();
return
NULL
;
}
memset
(
isi
,
0
,
sizeof
(
struct
iosapic_info
));
isi
->
addr
=
ioremap
(
hpa
,
4096
);
isi
->
isi_hpa
=
hpa
;
isi
->
isi_version
=
iosapic_rd_version
(
isi
);
isi
->
isi_num_vectors
=
IOSAPIC_IRDT_MAX_ENTRY
(
isi
->
isi_version
)
+
1
;
vip
=
isi
->
isi_vector
=
(
struct
vector_info
*
)
k
m
alloc
(
sizeof
(
struct
vector_info
)
*
isi
->
isi_num_vectors
,
GFP_KERNEL
);
k
z
alloc
(
sizeof
(
struct
vector_info
)
*
isi
->
isi_num_vectors
,
GFP_KERNEL
);
if
(
vip
==
NULL
)
{
kfree
(
isi
);
return
NULL
;
}
memset
(
vip
,
0
,
sizeof
(
struct
vector_info
)
*
isi
->
isi_num_vectors
);
for
(
cnt
=
0
;
cnt
<
isi
->
isi_num_vectors
;
cnt
++
,
vip
++
)
{
vip
->
irqline
=
(
unsigned
char
)
cnt
;
vip
->
iosapic
=
isi
;
...
...
drivers/parisc/lasi.c
View file @
89a2fa5f
...
...
@@ -166,11 +166,12 @@ static void lasi_power_off(void)
int
__init
lasi_init_chip
(
struct
parisc_device
*
dev
)
{
extern
void
(
*
chassis_power_off
)(
void
);
struct
gsc_asic
*
lasi
;
struct
gsc_irq
gsc_irq
;
int
ret
;
lasi
=
k
m
alloc
(
sizeof
(
*
lasi
),
GFP_KERNEL
);
lasi
=
k
z
alloc
(
sizeof
(
*
lasi
),
GFP_KERNEL
);
if
(
!
lasi
)
return
-
ENOMEM
;
...
...
@@ -222,7 +223,7 @@ lasi_init_chip(struct parisc_device *dev)
* ensure that only the first LASI (the one controlling the power off)
* should set the HPA here */
lasi_power_off_hpa
=
lasi
->
hpa
;
pm
_power_off
=
lasi_power_off
;
chassis
_power_off
=
lasi_power_off
;
return
ret
;
}
...
...
drivers/parisc/lba_pci.c
View file @
89a2fa5f
...
...
@@ -1565,7 +1565,7 @@ lba_driver_probe(struct parisc_device *dev)
}
else
if
(
IS_MERCURY
(
dev
)
||
IS_QUICKSILVER
(
dev
))
{
func_class
&=
0xff
;
version
=
kmalloc
(
6
,
GFP_KERNEL
);
s
printf
(
version
,
"TR%d.%d"
,(
func_class
>>
4
),(
func_class
&
0xf
));
s
nprintf
(
version
,
6
,
"TR%d.%d"
,(
func_class
>>
4
),(
func_class
&
0xf
));
/* We could use one printk for both Elroy and Mercury,
* but for the mask for func_class.
*/
...
...
@@ -1586,14 +1586,12 @@ lba_driver_probe(struct parisc_device *dev)
** have an IRT entry will get NULL back from iosapic code.
*/
lba_dev
=
k
m
alloc
(
sizeof
(
struct
lba_device
),
GFP_KERNEL
);
lba_dev
=
k
z
alloc
(
sizeof
(
struct
lba_device
),
GFP_KERNEL
);
if
(
!
lba_dev
)
{
printk
(
KERN_ERR
"lba_init_chip - couldn't alloc lba_device
\n
"
);
return
(
1
);
}
memset
(
lba_dev
,
0
,
sizeof
(
struct
lba_device
));
/* ---------- First : initialize data we already have --------- */
...
...
drivers/parisc/pdc_stable.c
View file @
89a2fa5f
This diff is collapsed.
Click to expand it.
drivers/parisc/sba_iommu.c
View file @
89a2fa5f
...
...
@@ -2064,14 +2064,13 @@ sba_driver_callback(struct parisc_device *dev)
printk
(
KERN_INFO
"%s found %s at 0x%lx
\n
"
,
MODULE_NAME
,
version
,
dev
->
hpa
.
start
);
sba_dev
=
k
m
alloc
(
sizeof
(
struct
sba_device
),
GFP_KERNEL
);
sba_dev
=
k
z
alloc
(
sizeof
(
struct
sba_device
),
GFP_KERNEL
);
if
(
!
sba_dev
)
{
printk
(
KERN_ERR
MODULE_NAME
" - couldn't alloc sba_device
\n
"
);
return
-
ENOMEM
;
}
parisc_set_drvdata
(
dev
,
sba_dev
);
memset
(
sba_dev
,
0
,
sizeof
(
struct
sba_device
));
for
(
i
=
0
;
i
<
MAX_IOC
;
i
++
)
spin_lock_init
(
&
(
sba_dev
->
ioc
[
i
].
res_lock
));
...
...
drivers/parisc/superio.c
View file @
89a2fa5f
...
...
@@ -89,6 +89,9 @@ static struct superio_device sio_dev;
#define DBG_INIT(x...)
#endif
#define SUPERIO "SuperIO"
#define PFX SUPERIO ": "
static
irqreturn_t
superio_interrupt
(
int
parent_irq
,
void
*
devp
,
struct
pt_regs
*
regs
)
{
...
...
@@ -117,7 +120,7 @@ superio_interrupt(int parent_irq, void *devp, struct pt_regs *regs)
local_irq
=
results
&
0x0f
;
if
(
local_irq
==
2
||
local_irq
>
7
)
{
printk
(
KERN_ERR
"SuperIO:
slave interrupted!
\n
"
);
printk
(
KERN_ERR
PFX
"
slave interrupted!
\n
"
);
return
IRQ_HANDLED
;
}
...
...
@@ -128,7 +131,7 @@ superio_interrupt(int parent_irq, void *devp, struct pt_regs *regs)
outb
(
OCW3_ISR
,
IC_PIC1
+
0
);
results
=
inb
(
IC_PIC1
+
0
);
if
((
results
&
0x80
)
==
0
)
{
/* if ISR7 not set: spurious */
printk
(
KERN_WARNING
"SuperIO:
spurious interrupt!
\n
"
);
printk
(
KERN_WARNING
PFX
"
spurious interrupt!
\n
"
);
return
IRQ_HANDLED
;
}
}
...
...
@@ -163,27 +166,27 @@ superio_init(struct pci_dev *pcidev)
/* ...then properly fixup the USB to point at suckyio PIC */
sio
->
usb_pdev
->
irq
=
superio_fixup_irq
(
sio
->
usb_pdev
);
printk
(
KERN_INFO
"SuperIO:
Found NS87560 Legacy I/O device at %s (IRQ %i)
\n
"
,
printk
(
KERN_INFO
PFX
"
Found NS87560 Legacy I/O device at %s (IRQ %i)
\n
"
,
pci_name
(
pdev
),
pdev
->
irq
);
pci_read_config_dword
(
pdev
,
SIO_SP1BAR
,
&
sio
->
sp1_base
);
sio
->
sp1_base
&=
~
1
;
printk
(
KERN_INFO
"SuperIO:
Serial port 1 at 0x%x
\n
"
,
sio
->
sp1_base
);
printk
(
KERN_INFO
PFX
"
Serial port 1 at 0x%x
\n
"
,
sio
->
sp1_base
);
pci_read_config_dword
(
pdev
,
SIO_SP2BAR
,
&
sio
->
sp2_base
);
sio
->
sp2_base
&=
~
1
;
printk
(
KERN_INFO
"SuperIO:
Serial port 2 at 0x%x
\n
"
,
sio
->
sp2_base
);
printk
(
KERN_INFO
PFX
"
Serial port 2 at 0x%x
\n
"
,
sio
->
sp2_base
);
pci_read_config_dword
(
pdev
,
SIO_PPBAR
,
&
sio
->
pp_base
);
sio
->
pp_base
&=
~
1
;
printk
(
KERN_INFO
"SuperIO:
Parallel port at 0x%x
\n
"
,
sio
->
pp_base
);
printk
(
KERN_INFO
PFX
"
Parallel port at 0x%x
\n
"
,
sio
->
pp_base
);
pci_read_config_dword
(
pdev
,
SIO_FDCBAR
,
&
sio
->
fdc_base
);
sio
->
fdc_base
&=
~
1
;
printk
(
KERN_INFO
"SuperIO:
Floppy controller at 0x%x
\n
"
,
sio
->
fdc_base
);
printk
(
KERN_INFO
PFX
"
Floppy controller at 0x%x
\n
"
,
sio
->
fdc_base
);
pci_read_config_dword
(
pdev
,
SIO_ACPIBAR
,
&
sio
->
acpi_base
);
sio
->
acpi_base
&=
~
1
;
printk
(
KERN_INFO
"SuperIO:
ACPI at 0x%x
\n
"
,
sio
->
acpi_base
);
printk
(
KERN_INFO
PFX
"
ACPI at 0x%x
\n
"
,
sio
->
acpi_base
);
request_region
(
IC_PIC1
,
0x1f
,
"pic1"
);
request_region
(
IC_PIC2
,
0x1f
,
"pic2"
);
...
...
@@ -263,14 +266,14 @@ superio_init(struct pci_dev *pcidev)
/* Setup USB power regulation */
outb
(
1
,
sio
->
acpi_base
+
USB_REG_CR
);
if
(
inb
(
sio
->
acpi_base
+
USB_REG_CR
)
&
1
)
printk
(
KERN_INFO
"SuperIO:
USB regulator enabled
\n
"
);
printk
(
KERN_INFO
PFX
"
USB regulator enabled
\n
"
);
else
printk
(
KERN_ERR
"USB regulator not initialized!
\n
"
);
printk
(
KERN_ERR
PFX
"USB regulator not initialized!
\n
"
);
if
(
request_irq
(
pdev
->
irq
,
superio_interrupt
,
SA_INTERRUPT
,
"SuperIO"
,
(
void
*
)
sio
))
{
SUPERIO
,
(
void
*
)
sio
))
{
printk
(
KERN_ERR
"SuperIO:
could not get irq
\n
"
);
printk
(
KERN_ERR
PFX
"
could not get irq
\n
"
);
BUG
();
return
;
}
...
...
@@ -284,7 +287,7 @@ static void superio_disable_irq(unsigned int irq)
u8
r8
;
if
((
irq
<
1
)
||
(
irq
==
2
)
||
(
irq
>
7
))
{
printk
(
KERN_ERR
"SuperIO:
Illegal irq number.
\n
"
);
printk
(
KERN_ERR
PFX
"
Illegal irq number.
\n
"
);
BUG
();
return
;
}
...
...
@@ -301,7 +304,7 @@ static void superio_enable_irq(unsigned int irq)
u8
r8
;
if
((
irq
<
1
)
||
(
irq
==
2
)
||
(
irq
>
7
))
{
printk
(
KERN_ERR
"SuperIO:
Illegal irq number (%d).
\n
"
,
irq
);
printk
(
KERN_ERR
PFX
"
Illegal irq number (%d).
\n
"
,
irq
);
BUG
();
return
;
}
...
...
@@ -319,7 +322,7 @@ static unsigned int superio_startup_irq(unsigned int irq)
}
static
struct
hw_interrupt_type
superio_interrupt_type
=
{
.
typename
=
"SuperIO"
,
.
typename
=
SUPERIO
,
.
startup
=
superio_startup_irq
,
.
shutdown
=
superio_disable_irq
,
.
enable
=
superio_enable_irq
,
...
...
@@ -413,7 +416,7 @@ static void __devinit superio_serial_init(void)
retval
=
early_serial_setup
(
&
serial
[
0
]);
if
(
retval
<
0
)
{
printk
(
KERN_WARNING
"SuperIO:
Register Serial #0 failed.
\n
"
);
printk
(
KERN_WARNING
PFX
"
Register Serial #0 failed.
\n
"
);
return
;
}
...
...
@@ -423,7 +426,7 @@ static void __devinit superio_serial_init(void)
retval
=
early_serial_setup
(
&
serial
[
1
]);
if
(
retval
<
0
)
printk
(
KERN_WARNING
"SuperIO:
Register Serial #1 failed.
\n
"
);
printk
(
KERN_WARNING
PFX
"
Register Serial #1 failed.
\n
"
);
#endif
/* CONFIG_SERIAL_8250 */
}
...
...
@@ -437,7 +440,7 @@ static void __devinit superio_parport_init(void)
PARPORT_DMA_NONE
/* dma */
,
NULL
/*struct pci_dev* */
)
)
printk
(
KERN_WARNING
"SuperIO:
Probing parallel port failed.
\n
"
);
printk
(
KERN_WARNING
PFX
"
Probing parallel port failed.
\n
"
);
#endif
/* CONFIG_PARPORT_PC */
}
...
...
@@ -499,7 +502,7 @@ static struct pci_device_id superio_tbl[] = {
};
static
struct
pci_driver
superio_driver
=
{
.
name
=
"SuperIO"
,
.
name
=
SUPERIO
,
.
id_table
=
superio_tbl
,
.
probe
=
superio_probe
,
};
...
...
drivers/parisc/wax.c
View file @
89a2fa5f
...
...
@@ -76,7 +76,7 @@ wax_init_chip(struct parisc_device *dev)
struct
gsc_irq
gsc_irq
;
int
ret
;
wax
=
k
m
alloc
(
sizeof
(
*
wax
),
GFP_KERNEL
);
wax
=
k
z
alloc
(
sizeof
(
*
wax
),
GFP_KERNEL
);
if
(
!
wax
)
return
-
ENOMEM
;
...
...
drivers/parport/parport_gsc.c
View file @
89a2fa5f
...
...
@@ -249,7 +249,7 @@ struct parport *__devinit parport_gsc_probe_port (unsigned long base,
struct
parport
tmp
;
struct
parport
*
p
=
&
tmp
;
priv
=
k
m
alloc
(
sizeof
(
struct
parport_gsc_private
),
GFP_KERNEL
);
priv
=
k
z
alloc
(
sizeof
(
struct
parport_gsc_private
),
GFP_KERNEL
);
if
(
!
priv
)
{
printk
(
KERN_DEBUG
"parport (0x%lx): no memory!
\n
"
,
base
);
return
NULL
;
...
...
drivers/video/console/sticore.c
View file @
89a2fa5f
...
...
@@ -30,10 +30,11 @@
#define STI_DRIVERVERSION "Version 0.9a"
struct
sti_struct
*
default_sti
;
struct
sti_struct
*
default_sti
__read_mostly
;
static
int
num_sti_roms
;
/* # of STI ROMS found */
static
struct
sti_struct
*
sti_roms
[
MAX_STI_ROMS
];
/* ptr to each sti_struct */
/* number of STI ROMS found and their ptrs to each struct */
static
int
num_sti_roms
__read_mostly
;
static
struct
sti_struct
*
sti_roms
[
MAX_STI_ROMS
]
__read_mostly
;
/* The colour indices used by STI are
...
...
@@ -266,7 +267,7 @@ sti_rom_copy(unsigned long base, unsigned long count, void *dest)
static
char
default_sti_path
[
21
];
static
char
default_sti_path
[
21
]
__read_mostly
;
#ifndef MODULE
static
int
__init
sti_setup
(
char
*
str
)
...
...
@@ -414,10 +415,10 @@ sti_init_glob_cfg(struct sti_struct *sti,
if
(
!
sti
->
sti_mem_request
)
sti
->
sti_mem_request
=
256
;
/* STI default */
glob_cfg
=
k
m
alloc
(
sizeof
(
*
sti
->
glob_cfg
),
GFP_KERNEL
);
glob_cfg_ext
=
k
m
alloc
(
sizeof
(
*
glob_cfg_ext
),
GFP_KERNEL
);
save_addr
=
k
m
alloc
(
save_addr_size
,
GFP_KERNEL
);
sti_mem_addr
=
k
m
alloc
(
sti
->
sti_mem_request
,
GFP_KERNEL
);
glob_cfg
=
k
z
alloc
(
sizeof
(
*
sti
->
glob_cfg
),
GFP_KERNEL
);
glob_cfg_ext
=
k
z
alloc
(
sizeof
(
*
glob_cfg_ext
),
GFP_KERNEL
);
save_addr
=
k
z
alloc
(
save_addr_size
,
GFP_KERNEL
);
sti_mem_addr
=
k
z
alloc
(
sti
->
sti_mem_request
,
GFP_KERNEL
);
if
(
!
(
glob_cfg
&&
glob_cfg_ext
&&
save_addr
&&
sti_mem_addr
))
{
kfree
(
glob_cfg
);
...
...
@@ -427,11 +428,6 @@ sti_init_glob_cfg(struct sti_struct *sti,
return
-
ENOMEM
;
}
memset
(
glob_cfg
,
0
,
sizeof
(
*
glob_cfg
));
memset
(
glob_cfg_ext
,
0
,
sizeof
(
*
glob_cfg_ext
));
memset
(
save_addr
,
0
,
save_addr_size
);
memset
(
sti_mem_addr
,
0
,
sti
->
sti_mem_request
);
glob_cfg
->
ext_ptr
=
STI_PTR
(
glob_cfg_ext
);
glob_cfg
->
save_addr
=
STI_PTR
(
save_addr
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
...
...
@@ -502,9 +498,9 @@ sti_init_glob_cfg(struct sti_struct *sti,
#ifdef CONFIG_FB
struct
sti_cooked_font
*
__init
sti_select_fbfont
(
struct
sti_cooked_rom
*
cooked_rom
,
char
*
fbfont_name
)
sti_select_fbfont
(
struct
sti_cooked_rom
*
cooked_rom
,
const
char
*
fbfont_name
)
{
struct
font_desc
*
fbfont
;
const
struct
font_desc
*
fbfont
;
unsigned
int
size
,
bpc
;
void
*
dest
;
struct
sti_rom_font
*
nf
;
...
...
@@ -525,10 +521,9 @@ sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name )
size
=
bpc
*
256
;
size
+=
sizeof
(
struct
sti_rom_font
);
nf
=
k
m
alloc
(
size
,
GFP_KERNEL
);
nf
=
k
z
alloc
(
size
,
GFP_KERNEL
);
if
(
!
nf
)
return
NULL
;
memset
(
nf
,
0
,
size
);
nf
->
first_char
=
0
;
nf
->
last_char
=
255
;
...
...
@@ -544,7 +539,7 @@ sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name )
dest
+=
sizeof
(
struct
sti_rom_font
);
memcpy
(
dest
,
fbfont
->
data
,
bpc
*
256
);
cooked_font
=
k
m
alloc
(
sizeof
(
*
cooked_font
),
GFP_KERNEL
);
cooked_font
=
k
z
alloc
(
sizeof
(
*
cooked_font
),
GFP_KERNEL
);
if
(
!
cooked_font
)
{
kfree
(
nf
);
return
NULL
;
...
...
@@ -559,7 +554,7 @@ sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name )
}
#else
struct
sti_cooked_font
*
__init
sti_select_fbfont
(
struct
sti_cooked_rom
*
cooked_rom
,
char
*
fbfont_name
)
sti_select_fbfont
(
struct
sti_cooked_rom
*
cooked_rom
,
c
onst
c
har
*
fbfont_name
)
{
return
NULL
;
}
...
...
@@ -617,7 +612,7 @@ sti_cook_fonts(struct sti_cooked_rom *cooked_rom,
struct
sti_rom_font
*
raw_font
,
*
font_start
;
struct
sti_cooked_font
*
cooked_font
;
cooked_font
=
k
m
alloc
(
sizeof
(
*
cooked_font
),
GFP_KERNEL
);
cooked_font
=
k
z
alloc
(
sizeof
(
*
cooked_font
),
GFP_KERNEL
);
if
(
!
cooked_font
)
return
0
;
...
...
@@ -631,7 +626,7 @@ sti_cook_fonts(struct sti_cooked_rom *cooked_rom,
while
(
raw_font
->
next_font
)
{
raw_font
=
((
void
*
)
font_start
)
+
(
raw_font
->
next_font
);
cooked_font
->
next_font
=
k
m
alloc
(
sizeof
(
*
cooked_font
),
GFP_KERNEL
);
cooked_font
->
next_font
=
k
z
alloc
(
sizeof
(
*
cooked_font
),
GFP_KERNEL
);
if
(
!
cooked_font
->
next_font
)
return
1
;
...
...
@@ -668,10 +663,9 @@ sti_bmode_font_raw(struct sti_cooked_font *f)
unsigned
char
*
n
,
*
p
,
*
q
;
int
size
=
f
->
raw
->
bytes_per_char
*
256
+
sizeof
(
struct
sti_rom_font
);
n
=
k
m
alloc
(
4
*
size
,
GFP_KERNEL
);
n
=
k
z
alloc
(
4
*
size
,
GFP_KERNEL
);
if
(
!
n
)
return
NULL
;
memset
(
n
,
0
,
4
*
size
);
p
=
n
+
3
;
q
=
(
unsigned
char
*
)
f
->
raw
;
while
(
size
--
)
{
...
...
@@ -816,13 +810,12 @@ sti_try_rom_generic(unsigned long address, unsigned long hpa, struct pci_dev *pd
return
NULL
;
}
sti
=
k
m
alloc
(
sizeof
(
*
sti
),
GFP_KERNEL
);
sti
=
k
z
alloc
(
sizeof
(
*
sti
),
GFP_KERNEL
);
if
(
!
sti
)
{
printk
(
KERN_ERR
"Not enough memory !
\n
"
);
return
NULL
;
}
memset
(
sti
,
0
,
sizeof
(
*
sti
));
spin_lock_init
(
&
sti
->
lock
);
test_rom:
...
...
@@ -1035,7 +1028,7 @@ static struct parisc_driver pa_sti_driver = {
* sti_init_roms() - detects all STI ROMs and stores them in sti_roms[]
*/
static
int
sticore_initialized
;
static
int
sticore_initialized
__read_mostly
;
static
void
__init
sti_init_roms
(
void
)
{
...
...
include/asm-parisc/atomic.h
View file @
89a2fa5f
/* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
* Copyright (C) 2006 Kyle McMartin <kyle@parisc-linux.org>
*/
#ifndef _ASM_PARISC_ATOMIC_H_
#define _ASM_PARISC_ATOMIC_H_
#include <linux/config.h>
#include <linux/types.h>
#include <asm/system.h>
/* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>. */
/*
* Atomic operations that C can't guarantee us. Useful for
...
...
@@ -46,15 +50,6 @@ extern raw_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned;
# define _atomic_spin_unlock_irqrestore(l,f) do { local_irq_restore(f); } while (0)
#endif
/* Note that we need not lock read accesses - aligned word writes/reads
* are atomic, so a reader never sees unconsistent values.
*
* Cache-line alignment would conflict with, for example, linux/module.h
*/
typedef
struct
{
volatile
int
counter
;
}
atomic_t
;
/* This should get optimized out since it's never called.
** Or get a link error if xchg is used "wrong".
*/
...
...
@@ -69,10 +64,9 @@ extern unsigned long __xchg64(unsigned long, unsigned long *);
#endif
/* optimizer better get rid of switch since size is a constant */
static
__inline__
unsigned
long
__xchg
(
unsigned
long
x
,
__volatile__
void
*
ptr
,
int
size
)
static
__inline__
unsigned
long
__xchg
(
unsigned
long
x
,
__volatile__
void
*
ptr
,
int
size
)
{
switch
(
size
)
{
#ifdef __LP64__
case
8
:
return
__xchg64
(
x
,(
unsigned
long
*
)
ptr
);
...
...
@@ -129,7 +123,13 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)
(unsigned long)_n_, sizeof(*(ptr))); \
})
/* Note that we need not lock read accesses - aligned word writes/reads
* are atomic, so a reader never sees unconsistent values.
*
* Cache-line alignment would conflict with, for example, linux/module.h
*/
typedef
struct
{
volatile
int
counter
;
}
atomic_t
;
/* It's possible to reduce all atomic operations to either
* __atomic_add_return, atomic_set and atomic_read (the latter
...
...
@@ -210,12 +210,66 @@ static __inline__ int atomic_read(const atomic_t *v)
#define atomic_dec_and_test(v) (atomic_dec_return(v) == 0)
#define ATOMIC_INIT(i)
{ (i) }
#define ATOMIC_INIT(i)
((atomic_t) { (i) })
#define smp_mb__before_atomic_dec() smp_mb()
#define smp_mb__after_atomic_dec() smp_mb()
#define smp_mb__before_atomic_inc() smp_mb()
#define smp_mb__after_atomic_inc() smp_mb()
#ifdef __LP64__
typedef
struct
{
volatile
s64
counter
;
}
atomic64_t
;
#define ATOMIC64_INIT(i) ((atomic64_t) { (i) })
static
__inline__
int
__atomic64_add_return
(
s64
i
,
atomic64_t
*
v
)
{
int
ret
;
unsigned
long
flags
;
_atomic_spin_lock_irqsave
(
v
,
flags
);
ret
=
(
v
->
counter
+=
i
);
_atomic_spin_unlock_irqrestore
(
v
,
flags
);
return
ret
;
}
static
__inline__
void
atomic64_set
(
atomic64_t
*
v
,
s64
i
)
{
unsigned
long
flags
;
_atomic_spin_lock_irqsave
(
v
,
flags
);
v
->
counter
=
i
;
_atomic_spin_unlock_irqrestore
(
v
,
flags
);
}
static
__inline__
s64
atomic64_read
(
const
atomic64_t
*
v
)
{
return
v
->
counter
;
}
#define atomic64_add(i,v) ((void)(__atomic64_add_return( ((s64)i),(v))))
#define atomic64_sub(i,v) ((void)(__atomic64_add_return(-((s64)i),(v))))
#define atomic64_inc(v) ((void)(__atomic64_add_return( 1,(v))))
#define atomic64_dec(v) ((void)(__atomic64_add_return( -1,(v))))
#define atomic64_add_return(i,v) (__atomic64_add_return( ((s64)i),(v)))
#define atomic64_sub_return(i,v) (__atomic64_add_return(-((s64)i),(v)))
#define atomic64_inc_return(v) (__atomic64_add_return( 1,(v)))
#define atomic64_dec_return(v) (__atomic64_add_return( -1,(v)))
#define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0)
#define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
#define atomic64_dec_and_test(v) (atomic64_dec_return(v) == 0)
#endif
/* __LP64__ */
#include <asm-generic/atomic.h>
#endif
#endif
/* _ASM_PARISC_ATOMIC_H_ */
include/asm-parisc/cacheflush.h
View file @
89a2fa5f
...
...
@@ -183,4 +183,10 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
__flush_cache_page
(
vma
,
vmaddr
);
}
#ifdef CONFIG_DEBUG_RODATA
void
mark_rodata_ro
(
void
);
#endif
#endif
/* _PARISC_CACHEFLUSH_H */
include/asm-parisc/compat_ucontext.h
View file @
89a2fa5f
#ifndef _ASM_PARISC_COMPAT_UCONTEXT_H
#define _ASM_PARISC_COMPAT_UCONTEXT_H
#include<linux/compat.h>
#include<asm/compat_signal.h>
#include <linux/compat.h>
/* 32-bit ucontext as seen from an 64-bit kernel */
struct
compat_ucontext
{
...
...
include/asm-parisc/grfioctl.h
View file @
89a2fa5f
...
...
@@ -58,7 +58,7 @@
#define CRT_ID_ELK_1024DB 0x27849CA5
/* Elk 1024x768 double buffer */
#define CRT_ID_ELK_GS S9000_ID_A1924A
/* Elk 1280x1024 GreyScale */
#define CRT_ID_CRX24 S9000_ID_A1439A
/* Piranha */
#define CRT_ID_VISUALIZE_EG 0x2D08C0A7
/* Graffiti (built-in B132+/B160L) */
#define CRT_ID_VISUALIZE_EG 0x2D08C0A7
/* Graffiti
, A4450A
(built-in B132+/B160L) */
#define CRT_ID_THUNDER 0x2F23E5FC
/* Thunder 1 VISUALIZE 48*/
#define CRT_ID_THUNDER2 0x2F8D570E
/* Thunder 2 VISUALIZE 48 XP*/
#define CRT_ID_HCRX S9000_ID_HCRX
/* Hyperdrive HCRX */
...
...
include/asm-parisc/pci.h
View file @
89a2fa5f
...
...
@@ -18,6 +18,18 @@
*/
#define PCI_MAX_BUSSES 256
/* To be used as: mdelay(pci_post_reset_delay);
*
* post_reset is the time the kernel should stall to prevent anyone from
* accessing the PCI bus once #RESET is de-asserted.
* PCI spec somewhere says 1 second but with multi-PCI bus systems,
* this makes the boot time much longer than necessary.
* 20ms seems to work for all the HP PCI implementations to date.
*/
#define pci_post_reset_delay 50
/*
** pci_hba_data (aka H2P_OBJECT in HP/UX)
**
...
...
@@ -83,7 +95,7 @@ static __inline__ int pci_is_lmmio(struct pci_hba_data *hba, unsigned long a)
/*
** Convert between PCI (IO_VIEW) addresses and processor (PA_VIEW) addresses.
** See pci
bios
.c for more conversions used by Generic PCI code.
** See pci.c for more conversions used by Generic PCI code.
**
** Platform characteristics/firmware guarantee that
** (1) PA_VIEW - IO_VIEW = lmmio_offset for both LMMIO and ELMMIO
...
...
@@ -191,9 +203,6 @@ struct pci_bios_ops {
*/
extern
struct
pci_port_ops
*
pci_port
;
extern
struct
pci_bios_ops
*
pci_bios
;
extern
int
pci_post_reset_delay
;
/* delay after de-asserting #RESET */
extern
int
pci_hba_count
;
extern
struct
pci_hba_data
*
parisc_pci_hba
[];
#ifdef CONFIG_PCI
extern
void
pcibios_register_hba
(
struct
pci_hba_data
*
);
...
...
include/asm-parisc/pgalloc.h
View file @
89a2fa5f
...
...
@@ -137,7 +137,6 @@ static inline void pte_free_kernel(pte_t *pte)
#define pte_free(page) pte_free_kernel(page_address(page))
extern
int
do_check_pgt_cache
(
int
,
int
);
#define check_pgt_cache() do { } while (0)
#endif
include/asm-parisc/pgtable.h
View file @
89a2fa5f
...
...
@@ -213,7 +213,7 @@ extern void *vmalloc_start;
#define PAGE_COPY PAGE_EXECREAD
#define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED)
#define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
#define PAGE_KERNEL_RO __pgprot(_PAGE_
PRESENT | _PAGE_EXEC | _PAGE_READ | _PAGE_DIRTY | _PAGE_ACCESSED
)
#define PAGE_KERNEL_RO __pgprot(_PAGE_
KERNEL & ~_PAGE_WRITE
)
#define PAGE_KERNEL_UNC __pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE)
#define PAGE_GATEWAY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_GATEWAY| _PAGE_READ)
#define PAGE_FLUSH __pgprot(_PAGE_FLUSH)
...
...
include/asm-parisc/rt_sigframe.h
View file @
89a2fa5f
#ifndef _ASM_PARISC_RT_SIGFRAME_H
#define _ASM_PARISC_RT_SIGFRAME_H
#ifdef CONFIG_COMPAT
#include <asm/compat_rt_sigframe.h>
#endif
#define SIGRETURN_TRAMP 4
#define SIGRESTARTBLOCK_TRAMP 5
#define TRAMP_SIZE (SIGRETURN_TRAMP + SIGRESTARTBLOCK_TRAMP)
...
...
include/asm-parisc/unistd.h
View file @
89a2fa5f
...
...
@@ -761,8 +761,27 @@
#define __NR_keyctl (__NR_Linux + 266)
#define __NR_ioprio_set (__NR_Linux + 267)
#define __NR_ioprio_get (__NR_Linux + 268)
#define __NR_inotify_init (__NR_Linux + 269)
#define __NR_inotify_add_watch (__NR_Linux + 270)
#define __NR_inotify_rm_watch (__NR_Linux + 271)
#define __NR_migrate_pages (__NR_Linux + 272)
#define __NR_pselect6 (__NR_Linux + 273)
#define __NR_ppoll (__NR_Linux + 274)
#define __NR_openat (__NR_Linux + 275)
#define __NR_mkdirat (__NR_Linux + 276)
#define __NR_mknodat (__NR_Linux + 277)
#define __NR_fchownat (__NR_Linux + 278)
#define __NR_futimesat (__NR_Linux + 279)
#define __NR_newfstatat (__NR_Linux + 280)
#define __NR_unlinkat (__NR_Linux + 281)
#define __NR_renameat (__NR_Linux + 282)
#define __NR_linkat (__NR_Linux + 283)
#define __NR_symlinkat (__NR_Linux + 284)
#define __NR_readlinkat (__NR_Linux + 285)
#define __NR_fchmodat (__NR_Linux + 286)
#define __NR_faccessat (__NR_Linux + 287)
#define __NR_Linux_syscalls 2
69
#define __NR_Linux_syscalls 2
88
#define HPUX_GATEWAY_ADDR 0xC0000004
#define LINUX_GATEWAY_ADDR 0x100
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment