Merge with master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
This commit is contained in:
@@ -113,16 +113,7 @@ typedef unsigned long sigset_t;
|
||||
#define SIG_UNBLOCK 2 /* for unblocking signals */
|
||||
#define SIG_SETMASK 3 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct osf_sigaction {
|
||||
|
||||
@@ -1,15 +1,4 @@
|
||||
/*
|
||||
* linux/include/asm-arm/arch-cl7500/vmalloc.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x1c000000)
|
||||
|
||||
@@ -17,15 +17,4 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
@@ -7,15 +7,4 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x1f000000)
|
||||
|
||||
@@ -8,17 +8,6 @@
|
||||
|
||||
#include <linux/config.h>
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
|
||||
#ifdef CONFIG_ARCH_FOOTBRIDGE
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x30000000)
|
||||
#else
|
||||
|
||||
@@ -17,15 +17,4 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
@@ -5,17 +5,6 @@
|
||||
#ifndef __ARCH_ARM_VMALLOC_H
|
||||
#define __ARCH_ARM_VMALLOC_H
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -17,16 +17,4 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
* * Copyright © ARM Limited 1998. All rights reserved.
|
||||
* ***********************************************************************/
|
||||
/* ************************************************************************
|
||||
*
|
||||
*
|
||||
* Integrator address map
|
||||
*
|
||||
*
|
||||
* NOTE: This is a multi-hosted header file for use with uHAL and
|
||||
* supported debuggers.
|
||||
*
|
||||
*
|
||||
* $Id: platform.s,v 1.32 2000/02/18 10:51:39 asims Exp $
|
||||
*
|
||||
*
|
||||
* ***********************************************************************/
|
||||
|
||||
#ifndef __address_h
|
||||
@@ -40,22 +40,22 @@
|
||||
* Memory definitions
|
||||
* ------------------------------------------------------------------------
|
||||
* Integrator memory map
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_BOOT_ROM_LO 0x00000000
|
||||
#define INTEGRATOR_BOOT_ROM_HI 0x20000000
|
||||
#define INTEGRATOR_BOOT_ROM_BASE INTEGRATOR_BOOT_ROM_HI /* Normal position */
|
||||
#define INTEGRATOR_BOOT_ROM_SIZE SZ_512K
|
||||
|
||||
/*
|
||||
/*
|
||||
* New Core Modules have different amounts of SSRAM, the amount of SSRAM
|
||||
* fitted can be found in HDR_STAT.
|
||||
*
|
||||
*
|
||||
* The symbol INTEGRATOR_SSRAM_SIZE is kept, however this now refers to
|
||||
* the minimum amount of SSRAM fitted on any core module.
|
||||
*
|
||||
*
|
||||
* New Core Modules also alias the SSRAM.
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_SSRAM_BASE 0x00000000
|
||||
#define INTEGRATOR_SSRAM_ALIAS_BASE 0x10800000
|
||||
@@ -67,9 +67,9 @@
|
||||
#define INTEGRATOR_MBRD_SSRAM_BASE 0x28000000
|
||||
#define INTEGRATOR_MBRD_SSRAM_SIZE SZ_512K
|
||||
|
||||
/*
|
||||
/*
|
||||
* SDRAM is a SIMM therefore the size is not known.
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_SDRAM_BASE 0x00040000
|
||||
|
||||
@@ -79,9 +79,9 @@
|
||||
#define INTEGRATOR_HDR2_SDRAM_BASE 0xA0000000
|
||||
#define INTEGRATOR_HDR3_SDRAM_BASE 0xB0000000
|
||||
|
||||
/*
|
||||
/*
|
||||
* Logic expansion modules
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_LOGIC_MODULES_BASE 0xC0000000
|
||||
#define INTEGRATOR_LOGIC_MODULE0_BASE 0xC0000000
|
||||
@@ -92,7 +92,7 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
* Integrator header card registers
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_HDR_ID_OFFSET 0x00
|
||||
#define INTEGRATOR_HDR_PROC_OFFSET 0x04
|
||||
@@ -185,12 +185,12 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
* Integrator system registers
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* System Controller
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_SC_ID_OFFSET 0x00
|
||||
#define INTEGRATOR_SC_OSC_OFFSET 0x04
|
||||
@@ -230,11 +230,11 @@
|
||||
#define INTEGRATOR_SC_CTRL_URTS1 (1 << 6)
|
||||
#define INTEGRATOR_SC_CTRL_UDTR1 (1 << 7)
|
||||
|
||||
/*
|
||||
/*
|
||||
* External Bus Interface
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_EBI_BASE 0x12000000
|
||||
#define INTEGRATOR_EBI_BASE 0x12000000
|
||||
|
||||
#define INTEGRATOR_EBI_CSR0_OFFSET 0x00
|
||||
#define INTEGRATOR_EBI_CSR1_OFFSET 0x04
|
||||
@@ -279,9 +279,9 @@
|
||||
#define INTEGRATOR_KBD_BASE 0x18000000 /* Keyboard */
|
||||
#define INTEGRATOR_MOUSE_BASE 0x19000000 /* Mouse */
|
||||
|
||||
/*
|
||||
/*
|
||||
* LED's & Switches
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define INTEGRATOR_DBG_ALPHA_OFFSET 0x00
|
||||
#define INTEGRATOR_DBG_LEDS_OFFSET 0x04
|
||||
@@ -300,7 +300,7 @@
|
||||
* ------------------------------------------------------------------------
|
||||
*/
|
||||
/* PS2 Keyboard interface */
|
||||
#define KMI0_BASE INTEGRATOR_KBD_BASE
|
||||
#define KMI0_BASE INTEGRATOR_KBD_BASE
|
||||
|
||||
/* PS2 Mouse interface */
|
||||
#define KMI1_BASE INTEGRATOR_MOUSE_BASE
|
||||
@@ -313,7 +313,7 @@
|
||||
* This represents a fairly liberal usage of address space. Even though
|
||||
* the V3 only has two windows (therefore we need to map stuff on the fly),
|
||||
* we maintain the same addresses, even if they're not mapped.
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define PHYS_PCI_MEM_BASE 0x40000000 /* 512M to xxx */
|
||||
/* unused 256M from A0000000-AFFFFFFF might be used for I2O ???
|
||||
@@ -326,7 +326,7 @@
|
||||
*/
|
||||
#define PHYS_PCI_V3_BASE 0x62000000
|
||||
|
||||
#define PCI_DRAMSIZE INTEGRATOR_SSRAM_SIZE
|
||||
#define PCI_DRAMSIZE INTEGRATOR_SSRAM_SIZE
|
||||
|
||||
/* 'export' these to UHAL */
|
||||
#define UHAL_PCI_IO PCI_IO_BASE
|
||||
@@ -334,7 +334,7 @@
|
||||
#define UHAL_PCI_ALLOC_IO_BASE 0x00004000
|
||||
#define UHAL_PCI_ALLOC_MEM_BASE PCI_MEM_BASE
|
||||
#define UHAL_PCI_MAX_SLOT 20
|
||||
|
||||
|
||||
/* ========================================================================
|
||||
* Start of uHAL definitions
|
||||
* ========================================================================
|
||||
@@ -343,17 +343,17 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
* Integrator Interrupt Controllers
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* Offsets from interrupt controller base
|
||||
*
|
||||
*
|
||||
* Offsets from interrupt controller base
|
||||
*
|
||||
* System Controller interrupt controller base is
|
||||
*
|
||||
*
|
||||
* INTEGRATOR_IC_BASE + (header_number << 6)
|
||||
*
|
||||
*
|
||||
* Core Module interrupt controller base is
|
||||
*
|
||||
* INTEGRATOR_HDR_IC
|
||||
*
|
||||
*
|
||||
* INTEGRATOR_HDR_IC
|
||||
*
|
||||
*/
|
||||
#define IRQ_STATUS 0
|
||||
#define IRQ_RAW_STATUS 0x04
|
||||
@@ -374,22 +374,22 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
* Interrupts
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* Each Core Module has two interrupts controllers, one on the core module
|
||||
* itself and one in the system controller on the motherboard. The
|
||||
* READ_INT macro in target.s reads both interrupt controllers and returns
|
||||
* a 32 bit bitmask, bits 0 to 23 are interrupts from the system controller
|
||||
* and bits 24 to 31 are from the core module.
|
||||
*
|
||||
*
|
||||
* The following definitions relate to the bitmask returned by READ_INT.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* LED's - The header LED is not accessible via the uHAL API
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define GREEN_LED 0x01
|
||||
#define YELLOW_LED 0x02
|
||||
@@ -399,44 +399,44 @@
|
||||
|
||||
#define LED_BANK INTEGRATOR_DBG_LEDS
|
||||
|
||||
/*
|
||||
/*
|
||||
* Memory definitions - run uHAL out of SSRAM.
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define uHAL_MEMORY_SIZE INTEGRATOR_SSRAM_SIZE
|
||||
|
||||
/*
|
||||
/*
|
||||
* Application Flash
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define FLASH_BASE INTEGRATOR_FLASH_BASE
|
||||
#define FLASH_SIZE INTEGRATOR_FLASH_SIZE
|
||||
#define FLASH_END (FLASH_BASE + FLASH_SIZE - 1)
|
||||
#define FLASH_BLOCK_SIZE SZ_128K
|
||||
|
||||
/*
|
||||
/*
|
||||
* Boot Flash
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define EPROM_BASE INTEGRATOR_BOOT_ROM_HI
|
||||
#define EPROM_SIZE INTEGRATOR_BOOT_ROM_SIZE
|
||||
#define EPROM_END (EPROM_BASE + EPROM_SIZE - 1)
|
||||
|
||||
/*
|
||||
/*
|
||||
* Clean base - dummy
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define CLEAN_BASE EPROM_BASE
|
||||
|
||||
/*
|
||||
/*
|
||||
* Timer definitions
|
||||
*
|
||||
*
|
||||
* Only use timer 1 & 2
|
||||
* (both run at 24MHz and will need the clock divider set to 16).
|
||||
*
|
||||
*
|
||||
* Timer 0 runs at bus frequency and therefore could vary and currently
|
||||
* uHAL can't handle that.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#define INTEGRATOR_TIMER0_BASE INTEGRATOR_CT_BASE
|
||||
@@ -447,9 +447,9 @@
|
||||
#define MAX_PERIOD 699050
|
||||
#define TICKS_PER_uSEC 24
|
||||
|
||||
/*
|
||||
* These are useconds NOT ticks.
|
||||
*
|
||||
/*
|
||||
* These are useconds NOT ticks.
|
||||
*
|
||||
*/
|
||||
#define mSEC_1 1000
|
||||
#define mSEC_5 (mSEC_1 * 5)
|
||||
|
||||
@@ -17,15 +17,4 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
//#define VMALLOC_END (0xe8000000)
|
||||
/* increase usable physical RAM to ~992M per RMK */
|
||||
#define VMALLOC_END (0xfe000000)
|
||||
|
||||
@@ -17,7 +17,4 @@
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END 0xfaffefff
|
||||
|
||||
@@ -1,17 +1,5 @@
|
||||
/*
|
||||
* linux/include/asm-arm/arch-ixp4xx/vmalloc.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END (0xFF000000)
|
||||
|
||||
|
||||
@@ -1,15 +1,4 @@
|
||||
/*
|
||||
* linux/include/asm-arm/arch-l7200/vmalloc.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
@@ -7,15 +7,4 @@
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after
|
||||
* the physical memory until the kernel virtual memory starts. That
|
||||
* means that any out-of-bounds memory accesses will hopefully be
|
||||
* caught. The vmalloc() routines leaves a hole of 4kB (one page)
|
||||
* between each vmalloced area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (0xe8000000)
|
||||
|
||||
@@ -17,17 +17,5 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
|
||||
@@ -8,15 +8,4 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (0xe8000000)
|
||||
|
||||
@@ -7,15 +7,4 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x1c000000)
|
||||
|
||||
@@ -19,18 +19,6 @@
|
||||
#ifndef __ASM_ARCH_VMALLOC_H
|
||||
#define __ASM_ARCH_VMALLOC_H
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END (0xE0000000)
|
||||
|
||||
#endif /* __ASM_ARCH_VMALLOC_H */
|
||||
|
||||
@@ -1,15 +1,4 @@
|
||||
/*
|
||||
* linux/include/asm-arm/arch-sa1100/vmalloc.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (0xe8000000)
|
||||
|
||||
@@ -1,15 +1,4 @@
|
||||
/*
|
||||
* linux/include/asm-arm/arch-rpc/vmalloc.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
|
||||
|
||||
@@ -18,16 +18,4 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*/
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
|
||||
#define VMALLOC_END (PAGE_OFFSET + 0x18000000)
|
||||
|
||||
@@ -16,6 +16,23 @@
|
||||
#include <asm/proc-fns.h>
|
||||
#include <asm/arch/vmalloc.h>
|
||||
|
||||
/*
|
||||
* Just any arbitrary offset to the start of the vmalloc VM area: the
|
||||
* current 8MB value just means that there will be a 8MB "hole" after the
|
||||
* physical memory until the kernel virtual memory starts. That means that
|
||||
* any out-of-bounds memory accesses will hopefully be caught.
|
||||
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
|
||||
* area for the same reason. ;)
|
||||
*
|
||||
* Note that platforms may override VMALLOC_START, but they must provide
|
||||
* VMALLOC_END. VMALLOC_END defines the (exclusive) limit of this space,
|
||||
* which may not overlap IO space.
|
||||
*/
|
||||
#ifndef VMALLOC_START
|
||||
#define VMALLOC_OFFSET (8*1024*1024)
|
||||
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Hardware-wise, we have a two level page table structure, where the first
|
||||
* level has 4096 entries, and the second level has 256 entries. Each entry
|
||||
|
||||
@@ -117,20 +117,7 @@ typedef unsigned long sigset_t;
|
||||
#define SA_IRQNOMASK 0x08000000
|
||||
#endif
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -117,16 +117,7 @@ typedef unsigned long sigset_t;
|
||||
#define SA_IRQNOMASK 0x08000000
|
||||
#endif
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -108,16 +108,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -107,16 +107,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef SIG_BLOCK
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#endif
|
||||
#ifndef SIG_UNBLOCK
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#endif
|
||||
#ifndef SIG_SETMASK
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__force __sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__force __sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__force __sighandler_t)-1) /* error return from signal */
|
||||
#endif
|
||||
@@ -107,16 +107,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -110,20 +110,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -118,13 +118,7 @@
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
# ifndef __ASSEMBLY__
|
||||
|
||||
@@ -133,9 +127,6 @@
|
||||
/* Avoid too many header ordering problems. */
|
||||
struct siginfo;
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __user (*__sighandler_t)(int);
|
||||
|
||||
typedef struct sigaltstack {
|
||||
void __user *ss_sp;
|
||||
int ss_flags;
|
||||
|
||||
@@ -136,6 +136,7 @@
|
||||
*/
|
||||
#define CAC_BASE (CACHED | AS_CAC_SPACE)
|
||||
#define AMO_BASE (UNCACHED | AS_AMO_SPACE)
|
||||
#define AMO_PHYS_BASE (UNCACHED_PHYS | AS_AMO_SPACE)
|
||||
#define GET_BASE (CACHED | AS_GET_SPACE)
|
||||
|
||||
/*
|
||||
@@ -160,6 +161,13 @@
|
||||
#define PHYS_TO_DMA(x) ( (((u64)(x) & NASID_MASK) >> 2) | NODE_OFFSET(x))
|
||||
|
||||
|
||||
/*
|
||||
* Macros to test for address type.
|
||||
*/
|
||||
#define IS_AMO_ADDRESS(x) (((u64)(x) & (REGION_BITS | AS_MASK)) == AMO_BASE)
|
||||
#define IS_AMO_PHYS_ADDRESS(x) (((u64)(x) & (REGION_BITS | AS_MASK)) == AMO_PHYS_BASE)
|
||||
|
||||
|
||||
/*
|
||||
* The following definitions pertain to the IO special address
|
||||
* space. They define the location of the big and little windows
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* SGI specific setup.
|
||||
*
|
||||
* Copyright (C) 1995-1997,1999,2001-2004 Silicon Graphics, Inc. All rights reserved.
|
||||
* Copyright (C) 1995-1997,1999,2001-2005 Silicon Graphics, Inc. All rights reserved.
|
||||
* Copyright (C) 1999 Ralf Baechle (ralf@gnu.org)
|
||||
*/
|
||||
#ifndef _ASM_IA64_SN_ARCH_H
|
||||
@@ -47,6 +47,21 @@ DECLARE_PER_CPU(struct sn_hub_info_s, __sn_hub_info);
|
||||
#define MAX_COMPACT_NODES 2048
|
||||
#define CPUS_PER_NODE 4
|
||||
|
||||
|
||||
/*
|
||||
* Compact node ID to nasid mappings kept in the per-cpu data areas of each
|
||||
* cpu.
|
||||
*/
|
||||
DECLARE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]);
|
||||
#define sn_cnodeid_to_nasid (&__get_cpu_var(__sn_cnodeid_to_nasid[0]))
|
||||
|
||||
|
||||
|
||||
extern u8 sn_partition_id;
|
||||
extern u8 sn_system_size;
|
||||
extern u8 sn_sharing_domain_size;
|
||||
extern u8 sn_region_size;
|
||||
|
||||
extern void sn_flush_all_caches(long addr, long bytes);
|
||||
|
||||
#endif /* _ASM_IA64_SN_ARCH_H */
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (c) 2001-2004 Silicon Graphics, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_IA64_SN_FETCHOP_H
|
||||
#define _ASM_IA64_SN_FETCHOP_H
|
||||
|
||||
#include <linux/config.h>
|
||||
|
||||
#define FETCHOP_BASENAME "sgi_fetchop"
|
||||
#define FETCHOP_FULLNAME "/dev/sgi_fetchop"
|
||||
|
||||
|
||||
|
||||
#define FETCHOP_VAR_SIZE 64 /* 64 byte per fetchop variable */
|
||||
|
||||
#define FETCHOP_LOAD 0
|
||||
#define FETCHOP_INCREMENT 8
|
||||
#define FETCHOP_DECREMENT 16
|
||||
#define FETCHOP_CLEAR 24
|
||||
|
||||
#define FETCHOP_STORE 0
|
||||
#define FETCHOP_AND 24
|
||||
#define FETCHOP_OR 32
|
||||
|
||||
#define FETCHOP_CLEAR_CACHE 56
|
||||
|
||||
#define FETCHOP_LOAD_OP(addr, op) ( \
|
||||
*(volatile long *)((char*) (addr) + (op)))
|
||||
|
||||
#define FETCHOP_STORE_OP(addr, op, x) ( \
|
||||
*(volatile long *)((char*) (addr) + (op)) = (long) (x))
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/*
|
||||
* Convert a region 6 (kaddr) address to the address of the fetchop variable
|
||||
*/
|
||||
#define FETCHOP_KADDR_TO_MSPEC_ADDR(kaddr) TO_MSPEC(kaddr)
|
||||
|
||||
|
||||
/*
|
||||
* Each Atomic Memory Operation (AMO formerly known as fetchop)
|
||||
* variable is 64 bytes long. The first 8 bytes are used. The
|
||||
* remaining 56 bytes are unaddressable due to the operation taking
|
||||
* that portion of the address.
|
||||
*
|
||||
* NOTE: The AMO_t _MUST_ be placed in either the first or second half
|
||||
* of the cache line. The cache line _MUST NOT_ be used for anything
|
||||
* other than additional AMO_t entries. This is because there are two
|
||||
* addresses which reference the same physical cache line. One will
|
||||
* be a cached entry with the memory type bits all set. This address
|
||||
* may be loaded into processor cache. The AMO_t will be referenced
|
||||
* uncached via the memory special memory type. If any portion of the
|
||||
* cached cache-line is modified, when that line is flushed, it will
|
||||
* overwrite the uncached value in physical memory and lead to
|
||||
* inconsistency.
|
||||
*/
|
||||
typedef struct {
|
||||
u64 variable;
|
||||
u64 unused[7];
|
||||
} AMO_t;
|
||||
|
||||
|
||||
/*
|
||||
* The following APIs are externalized to the kernel to allocate/free pages of
|
||||
* fetchop variables.
|
||||
* fetchop_kalloc_page - Allocate/initialize 1 fetchop page on the
|
||||
* specified cnode.
|
||||
* fetchop_kfree_page - Free a previously allocated fetchop page
|
||||
*/
|
||||
|
||||
unsigned long fetchop_kalloc_page(int nid);
|
||||
void fetchop_kfree_page(unsigned long maddr);
|
||||
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _ASM_IA64_SN_FETCHOP_H */
|
||||
|
||||
@@ -29,8 +29,9 @@
|
||||
#define L1_BRICKTYPE_CHI_CG 0x76 /* v */
|
||||
#define L1_BRICKTYPE_X 0x78 /* x */
|
||||
#define L1_BRICKTYPE_X2 0x79 /* y */
|
||||
#define L1_BRICKTYPE_SA 0x5e /* ^ */ /* TIO bringup brick */
|
||||
#define L1_BRICKTYPE_SA 0x5e /* ^ */
|
||||
#define L1_BRICKTYPE_PA 0x6a /* j */
|
||||
#define L1_BRICKTYPE_IA 0x6b /* k */
|
||||
#define L1_BRICKTYPE_ATHENA 0x2b /* + */
|
||||
|
||||
#endif /* _ASM_IA64_SN_L1_H */
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include <asm/irq.h>
|
||||
#include <asm/sn/arch.h>
|
||||
#include <asm/sn/intr.h>
|
||||
#include <asm/sn/pda.h>
|
||||
#include <asm/sn/bte.h>
|
||||
|
||||
/*
|
||||
@@ -67,20 +66,18 @@ typedef struct nodepda_s nodepda_t;
|
||||
* The next set of definitions provides this.
|
||||
* Routines are expected to use
|
||||
*
|
||||
* nodepda -> to access node PDA for the node on which code is running
|
||||
* subnodepda -> to access subnode PDA for the subnode on which code is running
|
||||
*
|
||||
* NODEPDA(cnode) -> to access node PDA for cnodeid
|
||||
* SUBNODEPDA(cnode,sn) -> to access subnode PDA for cnodeid/subnode
|
||||
* sn_nodepda - to access node PDA for the node on which code is running
|
||||
* NODEPDA(cnodeid) - to access node PDA for cnodeid
|
||||
*/
|
||||
|
||||
#define nodepda pda->p_nodepda /* Ptr to this node's PDA */
|
||||
#define NODEPDA(cnode) (nodepda->pernode_pdaindr[cnode])
|
||||
DECLARE_PER_CPU(struct nodepda_s *, __sn_nodepda);
|
||||
#define sn_nodepda (__get_cpu_var(__sn_nodepda))
|
||||
#define NODEPDA(cnodeid) (sn_nodepda->pernode_pdaindr[cnodeid])
|
||||
|
||||
/*
|
||||
* Check if given a compact node id the corresponding node has all the
|
||||
* cpus disabled.
|
||||
*/
|
||||
#define is_headless_node(cnode) (nr_cpus_node(cnode) == 0)
|
||||
#define is_headless_node(cnodeid) (nr_cpus_node(cnodeid) == 0)
|
||||
|
||||
#endif /* _ASM_IA64_SN_NODEPDA_H */
|
||||
|
||||
@@ -24,14 +24,6 @@
|
||||
|
||||
typedef struct pda_s {
|
||||
|
||||
/* Having a pointer in the begining of PDA tends to increase
|
||||
* the chance of having this pointer in cache. (Yes something
|
||||
* else gets pushed out). Doing this reduces the number of memory
|
||||
* access to all nodepda variables to be one
|
||||
*/
|
||||
struct nodepda_s *p_nodepda; /* Pointer to Per node PDA */
|
||||
struct subnodepda_s *p_subnodepda; /* Pointer to CPU subnode PDA */
|
||||
|
||||
/*
|
||||
* Support for SN LEDs
|
||||
*/
|
||||
@@ -49,7 +41,6 @@ typedef struct pda_s {
|
||||
|
||||
unsigned long sn_soft_irr[4];
|
||||
unsigned long sn_in_service_ivecs[4];
|
||||
short cnodeid_to_nasid_table[MAX_NUMNODES];
|
||||
int sn_lb_int_war_ticks;
|
||||
int sn_last_irq;
|
||||
int sn_first_irq;
|
||||
|
||||
@@ -384,6 +384,17 @@
|
||||
#define SH_EVENT_OCCURRED_RTC3_INT_SHFT 26
|
||||
#define SH_EVENT_OCCURRED_RTC3_INT_MASK 0x0000000004000000
|
||||
|
||||
/* ==================================================================== */
|
||||
/* Register "SH_IPI_ACCESS" */
|
||||
/* CPU interrupt Access Permission Bits */
|
||||
/* ==================================================================== */
|
||||
|
||||
#define SH1_IPI_ACCESS 0x0000000110060480
|
||||
#define SH2_IPI_ACCESS0 0x0000000010060c00
|
||||
#define SH2_IPI_ACCESS1 0x0000000010060c80
|
||||
#define SH2_IPI_ACCESS2 0x0000000010060d00
|
||||
#define SH2_IPI_ACCESS3 0x0000000010060d80
|
||||
|
||||
/* ==================================================================== */
|
||||
/* Register "SH_INT_CMPB" */
|
||||
/* RTC Compare Value for Processor B */
|
||||
@@ -429,6 +440,19 @@
|
||||
#define SH_INT_CMPD_REAL_TIME_CMPD_SHFT 0
|
||||
#define SH_INT_CMPD_REAL_TIME_CMPD_MASK 0x007fffffffffffff
|
||||
|
||||
/* ==================================================================== */
|
||||
/* Register "SH_MD_DQLP_MMR_DIR_PRIVEC0" */
|
||||
/* privilege vector for acc=0 */
|
||||
/* ==================================================================== */
|
||||
|
||||
#define SH1_MD_DQLP_MMR_DIR_PRIVEC0 0x0000000100030300
|
||||
|
||||
/* ==================================================================== */
|
||||
/* Register "SH_MD_DQRP_MMR_DIR_PRIVEC0" */
|
||||
/* privilege vector for acc=0 */
|
||||
/* ==================================================================== */
|
||||
|
||||
#define SH1_MD_DQRP_MMR_DIR_PRIVEC0 0x0000000100050300
|
||||
|
||||
/* ==================================================================== */
|
||||
/* Some MMRs are functionally identical (or close enough) on both SHUB1 */
|
||||
|
||||
+1462
-1580
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2000-2004 Silicon Graphics, Inc. All rights reserved.
|
||||
* Copyright (C) 2000-2005 Silicon Graphics, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
@@ -92,24 +92,24 @@
|
||||
* NOTE: on non-MP systems, only cpuid 0 exists
|
||||
*/
|
||||
|
||||
extern short physical_node_map[]; /* indexed by nasid to get cnode */
|
||||
extern short physical_node_map[]; /* indexed by nasid to get cnode */
|
||||
|
||||
/*
|
||||
* Macros for retrieving info about current cpu
|
||||
*/
|
||||
#define get_nasid() (nodepda->phys_cpuid[smp_processor_id()].nasid)
|
||||
#define get_subnode() (nodepda->phys_cpuid[smp_processor_id()].subnode)
|
||||
#define get_slice() (nodepda->phys_cpuid[smp_processor_id()].slice)
|
||||
#define get_cnode() (nodepda->phys_cpuid[smp_processor_id()].cnode)
|
||||
#define get_sapicid() ((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
|
||||
#define get_nasid() (sn_nodepda->phys_cpuid[smp_processor_id()].nasid)
|
||||
#define get_subnode() (sn_nodepda->phys_cpuid[smp_processor_id()].subnode)
|
||||
#define get_slice() (sn_nodepda->phys_cpuid[smp_processor_id()].slice)
|
||||
#define get_cnode() (sn_nodepda->phys_cpuid[smp_processor_id()].cnode)
|
||||
#define get_sapicid() ((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
|
||||
|
||||
/*
|
||||
* Macros for retrieving info about an arbitrary cpu
|
||||
* cpuid - logical cpu id
|
||||
*/
|
||||
#define cpuid_to_nasid(cpuid) (nodepda->phys_cpuid[cpuid].nasid)
|
||||
#define cpuid_to_subnode(cpuid) (nodepda->phys_cpuid[cpuid].subnode)
|
||||
#define cpuid_to_slice(cpuid) (nodepda->phys_cpuid[cpuid].slice)
|
||||
#define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid)
|
||||
#define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode)
|
||||
#define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice)
|
||||
#define cpuid_to_cnodeid(cpuid) (physical_node_map[cpuid_to_nasid(cpuid)])
|
||||
|
||||
|
||||
@@ -123,11 +123,8 @@ extern int nasid_slice_to_cpuid(int, int);
|
||||
|
||||
/*
|
||||
* cnodeid_to_nasid - convert a cnodeid to a NASID
|
||||
* Macro relies on pg_data for a node being on the node itself.
|
||||
* Just extract the NASID from the pointer.
|
||||
*
|
||||
*/
|
||||
#define cnodeid_to_nasid(cnodeid) pda->cnodeid_to_nasid_table[cnodeid]
|
||||
#define cnodeid_to_nasid(cnodeid) (sn_cnodeid_to_nasid[cnodeid])
|
||||
|
||||
/*
|
||||
* nasid_to_cnodeid - convert a NASID to a cnodeid
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 1992-1997,1999-2004 Silicon Graphics, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef _ASM_IA64_SN_SN_FRU_H
|
||||
#define _ASM_IA64_SN_SN_FRU_H
|
||||
|
||||
#define MAX_DIMMS 8 /* max # of dimm banks */
|
||||
#define MAX_PCIDEV 8 /* max # of pci devices on a pci bus */
|
||||
|
||||
typedef unsigned char confidence_t;
|
||||
|
||||
typedef struct kf_mem_s {
|
||||
confidence_t km_confidence; /* confidence level that the memory is bad
|
||||
* is this necessary ?
|
||||
*/
|
||||
confidence_t km_dimm[MAX_DIMMS];
|
||||
/* confidence level that dimm[i] is bad
|
||||
*I think this is the right number
|
||||
*/
|
||||
|
||||
} kf_mem_t;
|
||||
|
||||
typedef struct kf_cpu_s {
|
||||
confidence_t kc_confidence; /* confidence level that cpu is bad */
|
||||
confidence_t kc_icache; /* confidence level that instr. cache is bad */
|
||||
confidence_t kc_dcache; /* confidence level that data cache is bad */
|
||||
confidence_t kc_scache; /* confidence level that sec. cache is bad */
|
||||
confidence_t kc_sysbus; /* confidence level that sysad/cmd/state bus is bad */
|
||||
} kf_cpu_t;
|
||||
|
||||
|
||||
typedef struct kf_pci_bus_s {
|
||||
confidence_t kpb_belief; /* confidence level that the pci bus is bad */
|
||||
confidence_t kpb_pcidev_belief[MAX_PCIDEV];
|
||||
/* confidence level that the pci dev is bad */
|
||||
} kf_pci_bus_t;
|
||||
|
||||
|
||||
#endif /* _ASM_IA64_SN_SN_FRU_H */
|
||||
|
||||
@@ -557,7 +557,8 @@ static inline u64
|
||||
ia64_sn_partition_serial_get(void)
|
||||
{
|
||||
struct ia64_sal_retval ret_stuff;
|
||||
SAL_CALL(ret_stuff, SN_SAL_PARTITION_SERIAL_GET, 0, 0, 0, 0, 0, 0, 0);
|
||||
ia64_sal_oemcall_reentrant(&ret_stuff, SN_SAL_PARTITION_SERIAL_GET, 0,
|
||||
0, 0, 0, 0, 0, 0);
|
||||
if (ret_stuff.status != 0)
|
||||
return 0;
|
||||
return ret_stuff.v0;
|
||||
@@ -565,11 +566,10 @@ ia64_sn_partition_serial_get(void)
|
||||
|
||||
static inline u64
|
||||
sn_partition_serial_number_val(void) {
|
||||
if (sn_partition_serial_number) {
|
||||
return(sn_partition_serial_number);
|
||||
} else {
|
||||
return(sn_partition_serial_number = ia64_sn_partition_serial_get());
|
||||
if (unlikely(sn_partition_serial_number == 0)) {
|
||||
sn_partition_serial_number = ia64_sn_partition_serial_get();
|
||||
}
|
||||
return sn_partition_serial_number;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -580,8 +580,8 @@ static inline partid_t
|
||||
ia64_sn_sysctl_partition_get(nasid_t nasid)
|
||||
{
|
||||
struct ia64_sal_retval ret_stuff;
|
||||
SAL_CALL(ret_stuff, SN_SAL_SYSCTL_PARTITION_GET, nasid,
|
||||
0, 0, 0, 0, 0, 0);
|
||||
ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_SYSCTL_PARTITION_GET, nasid,
|
||||
0, 0, 0, 0, 0, 0);
|
||||
if (ret_stuff.status != 0)
|
||||
return INVALID_PARTID;
|
||||
return ((partid_t)ret_stuff.v0);
|
||||
@@ -595,11 +595,38 @@ extern partid_t sn_partid;
|
||||
|
||||
static inline partid_t
|
||||
sn_local_partid(void) {
|
||||
if (sn_partid < 0) {
|
||||
return (sn_partid = ia64_sn_sysctl_partition_get(cpuid_to_nasid(smp_processor_id())));
|
||||
} else {
|
||||
return sn_partid;
|
||||
if (unlikely(sn_partid < 0)) {
|
||||
sn_partid = ia64_sn_sysctl_partition_get(cpuid_to_nasid(smp_processor_id()));
|
||||
}
|
||||
return sn_partid;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the physical address of the partition's reserved page through
|
||||
* an iterative number of calls.
|
||||
*
|
||||
* On first call, 'cookie' and 'len' should be set to 0, and 'addr'
|
||||
* set to the nasid of the partition whose reserved page's address is
|
||||
* being sought.
|
||||
* On subsequent calls, pass the values, that were passed back on the
|
||||
* previous call.
|
||||
*
|
||||
* While the return status equals SALRET_MORE_PASSES, keep calling
|
||||
* this function after first copying 'len' bytes starting at 'addr'
|
||||
* into 'buf'. Once the return status equals SALRET_OK, 'addr' will
|
||||
* be the physical address of the partition's reserved page. If the
|
||||
* return status equals neither of these, an error as occurred.
|
||||
*/
|
||||
static inline s64
|
||||
sn_partition_reserved_page_pa(u64 buf, u64 *cookie, u64 *addr, u64 *len)
|
||||
{
|
||||
struct ia64_sal_retval rv;
|
||||
ia64_sal_oemcall_reentrant(&rv, SN_SAL_GET_PARTITION_ADDR, *cookie,
|
||||
*addr, buf, *len, 0, 0, 0);
|
||||
*cookie = rv.v0;
|
||||
*addr = rv.v1;
|
||||
*len = rv.v2;
|
||||
return rv.status;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -621,8 +648,8 @@ static inline int
|
||||
sn_register_xp_addr_region(u64 paddr, u64 len, int operation)
|
||||
{
|
||||
struct ia64_sal_retval ret_stuff;
|
||||
SAL_CALL(ret_stuff, SN_SAL_XP_ADDR_REGION, paddr, len, (u64)operation,
|
||||
0, 0, 0, 0);
|
||||
ia64_sal_oemcall(&ret_stuff, SN_SAL_XP_ADDR_REGION, paddr, len,
|
||||
(u64)operation, 0, 0, 0, 0);
|
||||
return ret_stuff.status;
|
||||
}
|
||||
|
||||
@@ -646,8 +673,8 @@ sn_register_nofault_code(u64 start_addr, u64 end_addr, u64 return_addr,
|
||||
} else {
|
||||
call = SN_SAL_NO_FAULT_ZONE_PHYSICAL;
|
||||
}
|
||||
SAL_CALL(ret_stuff, call, start_addr, end_addr, return_addr, (u64)1,
|
||||
0, 0, 0);
|
||||
ia64_sal_oemcall(&ret_stuff, call, start_addr, end_addr, return_addr,
|
||||
(u64)1, 0, 0, 0);
|
||||
return ret_stuff.status;
|
||||
}
|
||||
|
||||
@@ -668,8 +695,8 @@ static inline int
|
||||
sn_change_coherence(u64 *new_domain, u64 *old_domain)
|
||||
{
|
||||
struct ia64_sal_retval ret_stuff;
|
||||
SAL_CALL(ret_stuff, SN_SAL_COHERENCE, new_domain, old_domain, 0, 0,
|
||||
0, 0, 0);
|
||||
ia64_sal_oemcall(&ret_stuff, SN_SAL_COHERENCE, (u64)new_domain,
|
||||
(u64)old_domain, 0, 0, 0, 0, 0);
|
||||
return ret_stuff.status;
|
||||
}
|
||||
|
||||
@@ -688,8 +715,8 @@ sn_change_memprotect(u64 paddr, u64 len, u64 perms, u64 *nasid_array)
|
||||
cnodeid = nasid_to_cnodeid(get_node_number(paddr));
|
||||
// spin_lock(&NODEPDA(cnodeid)->bist_lock);
|
||||
local_irq_save(irq_flags);
|
||||
SAL_CALL_NOLOCK(ret_stuff, SN_SAL_MEMPROTECT, paddr, len, nasid_array,
|
||||
perms, 0, 0, 0);
|
||||
ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len,
|
||||
(u64)nasid_array, perms, 0, 0, 0);
|
||||
local_irq_restore(irq_flags);
|
||||
// spin_unlock(&NODEPDA(cnodeid)->bist_lock);
|
||||
return ret_stuff.status;
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (c) 2002-2004 Silicon Graphics, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_IA64_SN_SNDRV_H
|
||||
#define _ASM_IA64_SN_SNDRV_H
|
||||
|
||||
/* ioctl commands */
|
||||
#define SNDRV_GET_ROUTERINFO 1
|
||||
#define SNDRV_GET_INFOSIZE 2
|
||||
#define SNDRV_GET_HUBINFO 3
|
||||
#define SNDRV_GET_FLASHLOGSIZE 4
|
||||
#define SNDRV_SET_FLASHSYNC 5
|
||||
#define SNDRV_GET_FLASHLOGDATA 6
|
||||
#define SNDRV_GET_FLASHLOGALL 7
|
||||
|
||||
#define SNDRV_SET_HISTOGRAM_TYPE 14
|
||||
|
||||
#define SNDRV_ELSC_COMMAND 19
|
||||
#define SNDRV_CLEAR_LOG 20
|
||||
#define SNDRV_INIT_LOG 21
|
||||
#define SNDRV_GET_PIMM_PSC 22
|
||||
#define SNDRV_SET_PARTITION 23
|
||||
#define SNDRV_GET_PARTITION 24
|
||||
|
||||
/* see synergy_perf_ioctl() */
|
||||
#define SNDRV_GET_SYNERGY_VERSION 30
|
||||
#define SNDRV_GET_SYNERGY_STATUS 31
|
||||
#define SNDRV_GET_SYNERGYINFO 32
|
||||
#define SNDRV_SYNERGY_APPEND 33
|
||||
#define SNDRV_SYNERGY_ENABLE 34
|
||||
#define SNDRV_SYNERGY_FREQ 35
|
||||
|
||||
/* Devices */
|
||||
#define SNDRV_UKNOWN_DEVICE -1
|
||||
#define SNDRV_ROUTER_DEVICE 1
|
||||
#define SNDRV_HUB_DEVICE 2
|
||||
#define SNDRV_ELSC_NVRAM_DEVICE 3
|
||||
#define SNDRV_ELSC_CONTROLLER_DEVICE 4
|
||||
#define SNDRV_SYSCTL_SUBCH 5
|
||||
#define SNDRV_SYNERGY_DEVICE 6
|
||||
|
||||
#endif /* _ASM_IA64_SN_SNDRV_H */
|
||||
@@ -0,0 +1,436 @@
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2004-2005 Silicon Graphics, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* External Cross Partition (XP) structures and defines.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _ASM_IA64_SN_XP_H
|
||||
#define _ASM_IA64_SN_XP_H
|
||||
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <linux/cache.h>
|
||||
#include <linux/hardirq.h>
|
||||
#include <asm/sn/types.h>
|
||||
#include <asm/sn/bte.h>
|
||||
|
||||
|
||||
#ifdef USE_DBUG_ON
|
||||
#define DBUG_ON(condition) BUG_ON(condition)
|
||||
#else
|
||||
#define DBUG_ON(condition)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Define the maximum number of logically defined partitions the system
|
||||
* can support. It is constrained by the maximum number of hardware
|
||||
* partitionable regions. The term 'region' in this context refers to the
|
||||
* minimum number of nodes that can comprise an access protection grouping.
|
||||
* The access protection is in regards to memory, IPI and IOI.
|
||||
*
|
||||
* The maximum number of hardware partitionable regions is equal to the
|
||||
* maximum number of nodes in the entire system divided by the minimum number
|
||||
* of nodes that comprise an access protection grouping.
|
||||
*/
|
||||
#define XP_MAX_PARTITIONS 64
|
||||
|
||||
|
||||
/*
|
||||
* Define the number of u64s required to represent all the C-brick nasids
|
||||
* as a bitmap. The cross-partition kernel modules deal only with
|
||||
* C-brick nasids, thus the need for bitmaps which don't account for
|
||||
* odd-numbered (non C-brick) nasids.
|
||||
*/
|
||||
#define XP_MAX_PHYSNODE_ID (MAX_PHYSNODE_ID / 2)
|
||||
#define XP_NASID_MASK_BYTES ((XP_MAX_PHYSNODE_ID + 7) / 8)
|
||||
#define XP_NASID_MASK_WORDS ((XP_MAX_PHYSNODE_ID + 63) / 64)
|
||||
|
||||
|
||||
/*
|
||||
* Wrapper for bte_copy() that should it return a failure status will retry
|
||||
* the bte_copy() once in the hope that the failure was due to a temporary
|
||||
* aberration (i.e., the link going down temporarily).
|
||||
*
|
||||
* See bte_copy for definition of the input parameters.
|
||||
*
|
||||
* Note: xp_bte_copy() should never be called while holding a spinlock.
|
||||
*/
|
||||
static inline bte_result_t
|
||||
xp_bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
|
||||
{
|
||||
bte_result_t ret;
|
||||
|
||||
|
||||
ret = bte_copy(src, dest, len, mode, notification);
|
||||
|
||||
if (ret != BTE_SUCCESS) {
|
||||
if (!in_interrupt()) {
|
||||
cond_resched();
|
||||
}
|
||||
ret = bte_copy(src, dest, len, mode, notification);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* XPC establishes channel connections between the local partition and any
|
||||
* other partition that is currently up. Over these channels, kernel-level
|
||||
* `users' can communicate with their counterparts on the other partitions.
|
||||
*
|
||||
* The maxinum number of channels is limited to eight. For performance reasons,
|
||||
* the internal cross partition structures require sixteen bytes per channel,
|
||||
* and eight allows all of this interface-shared info to fit in one cache line.
|
||||
*
|
||||
* XPC_NCHANNELS reflects the total number of channels currently defined.
|
||||
* If the need for additional channels arises, one can simply increase
|
||||
* XPC_NCHANNELS accordingly. If the day should come where that number
|
||||
* exceeds the MAXIMUM number of channels allowed (eight), then one will need
|
||||
* to make changes to the XPC code to allow for this.
|
||||
*/
|
||||
#define XPC_MEM_CHANNEL 0 /* memory channel number */
|
||||
#define XPC_NET_CHANNEL 1 /* network channel number */
|
||||
|
||||
#define XPC_NCHANNELS 2 /* #of defined channels */
|
||||
#define XPC_MAX_NCHANNELS 8 /* max #of channels allowed */
|
||||
|
||||
#if XPC_NCHANNELS > XPC_MAX_NCHANNELS
|
||||
#error XPC_NCHANNELS exceeds MAXIMUM allowed.
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* The format of an XPC message is as follows:
|
||||
*
|
||||
* +-------+--------------------------------+
|
||||
* | flags |////////////////////////////////|
|
||||
* +-------+--------------------------------+
|
||||
* | message # |
|
||||
* +----------------------------------------+
|
||||
* | payload (user-defined message) |
|
||||
* | |
|
||||
* :
|
||||
* | |
|
||||
* +----------------------------------------+
|
||||
*
|
||||
* The size of the payload is defined by the user via xpc_connect(). A user-
|
||||
* defined message resides in the payload area.
|
||||
*
|
||||
* The user should have no dealings with the message header, but only the
|
||||
* message's payload. When a message entry is allocated (via xpc_allocate())
|
||||
* a pointer to the payload area is returned and not the actual beginning of
|
||||
* the XPC message. The user then constructs a message in the payload area
|
||||
* and passes that pointer as an argument on xpc_send() or xpc_send_notify().
|
||||
*
|
||||
* The size of a message entry (within a message queue) must be a cacheline
|
||||
* sized multiple in order to facilitate the BTE transfer of messages from one
|
||||
* message queue to another. A macro, XPC_MSG_SIZE(), is provided for the user
|
||||
* that wants to fit as many msg entries as possible in a given memory size
|
||||
* (e.g. a memory page).
|
||||
*/
|
||||
struct xpc_msg {
|
||||
u8 flags; /* FOR XPC INTERNAL USE ONLY */
|
||||
u8 reserved[7]; /* FOR XPC INTERNAL USE ONLY */
|
||||
s64 number; /* FOR XPC INTERNAL USE ONLY */
|
||||
|
||||
u64 payload; /* user defined portion of message */
|
||||
};
|
||||
|
||||
|
||||
#define XPC_MSG_PAYLOAD_OFFSET (u64) (&((struct xpc_msg *)0)->payload)
|
||||
#define XPC_MSG_SIZE(_payload_size) \
|
||||
L1_CACHE_ALIGN(XPC_MSG_PAYLOAD_OFFSET + (_payload_size))
|
||||
|
||||
|
||||
/*
|
||||
* Define the return values and values passed to user's callout functions.
|
||||
* (It is important to add new value codes at the end just preceding
|
||||
* xpcUnknownReason, which must have the highest numerical value.)
|
||||
*/
|
||||
enum xpc_retval {
|
||||
xpcSuccess = 0,
|
||||
|
||||
xpcNotConnected, /* 1: channel is not connected */
|
||||
xpcConnected, /* 2: channel connected (opened) */
|
||||
xpcRETIRED1, /* 3: (formerly xpcDisconnected) */
|
||||
|
||||
xpcMsgReceived, /* 4: message received */
|
||||
xpcMsgDelivered, /* 5: message delivered and acknowledged */
|
||||
|
||||
xpcRETIRED2, /* 6: (formerly xpcTransferFailed) */
|
||||
|
||||
xpcNoWait, /* 7: operation would require wait */
|
||||
xpcRetry, /* 8: retry operation */
|
||||
xpcTimeout, /* 9: timeout in xpc_allocate_msg_wait() */
|
||||
xpcInterrupted, /* 10: interrupted wait */
|
||||
|
||||
xpcUnequalMsgSizes, /* 11: message size disparity between sides */
|
||||
xpcInvalidAddress, /* 12: invalid address */
|
||||
|
||||
xpcNoMemory, /* 13: no memory available for XPC structures */
|
||||
xpcLackOfResources, /* 14: insufficient resources for operation */
|
||||
xpcUnregistered, /* 15: channel is not registered */
|
||||
xpcAlreadyRegistered, /* 16: channel is already registered */
|
||||
|
||||
xpcPartitionDown, /* 17: remote partition is down */
|
||||
xpcNotLoaded, /* 18: XPC module is not loaded */
|
||||
xpcUnloading, /* 19: this side is unloading XPC module */
|
||||
|
||||
xpcBadMagic, /* 20: XPC MAGIC string not found */
|
||||
|
||||
xpcReactivating, /* 21: remote partition was reactivated */
|
||||
|
||||
xpcUnregistering, /* 22: this side is unregistering channel */
|
||||
xpcOtherUnregistering, /* 23: other side is unregistering channel */
|
||||
|
||||
xpcCloneKThread, /* 24: cloning kernel thread */
|
||||
xpcCloneKThreadFailed, /* 25: cloning kernel thread failed */
|
||||
|
||||
xpcNoHeartbeat, /* 26: remote partition has no heartbeat */
|
||||
|
||||
xpcPioReadError, /* 27: PIO read error */
|
||||
xpcPhysAddrRegFailed, /* 28: registration of phys addr range failed */
|
||||
|
||||
xpcBteDirectoryError, /* 29: maps to BTEFAIL_DIR */
|
||||
xpcBtePoisonError, /* 30: maps to BTEFAIL_POISON */
|
||||
xpcBteWriteError, /* 31: maps to BTEFAIL_WERR */
|
||||
xpcBteAccessError, /* 32: maps to BTEFAIL_ACCESS */
|
||||
xpcBtePWriteError, /* 33: maps to BTEFAIL_PWERR */
|
||||
xpcBtePReadError, /* 34: maps to BTEFAIL_PRERR */
|
||||
xpcBteTimeOutError, /* 35: maps to BTEFAIL_TOUT */
|
||||
xpcBteXtalkError, /* 36: maps to BTEFAIL_XTERR */
|
||||
xpcBteNotAvailable, /* 37: maps to BTEFAIL_NOTAVAIL */
|
||||
xpcBteUnmappedError, /* 38: unmapped BTEFAIL_ error */
|
||||
|
||||
xpcBadVersion, /* 39: bad version number */
|
||||
xpcVarsNotSet, /* 40: the XPC variables are not set up */
|
||||
xpcNoRsvdPageAddr, /* 41: unable to get rsvd page's phys addr */
|
||||
xpcInvalidPartid, /* 42: invalid partition ID */
|
||||
xpcLocalPartid, /* 43: local partition ID */
|
||||
|
||||
xpcUnknownReason /* 44: unknown reason -- must be last in list */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Define the callout function types used by XPC to update the user on
|
||||
* connection activity and state changes (via the user function registered by
|
||||
* xpc_connect()) and to notify them of messages received and delivered (via
|
||||
* the user function registered by xpc_send_notify()).
|
||||
*
|
||||
* The two function types are xpc_channel_func and xpc_notify_func and
|
||||
* both share the following arguments, with the exception of "data", which
|
||||
* only xpc_channel_func has.
|
||||
*
|
||||
* Arguments:
|
||||
*
|
||||
* reason - reason code. (See following table.)
|
||||
* partid - partition ID associated with condition.
|
||||
* ch_number - channel # associated with condition.
|
||||
* data - pointer to optional data. (See following table.)
|
||||
* key - pointer to optional user-defined value provided as the "key"
|
||||
* argument to xpc_connect() or xpc_send_notify().
|
||||
*
|
||||
* In the following table the "Optional Data" column applies to callouts made
|
||||
* to functions registered by xpc_connect(). A "NA" in that column indicates
|
||||
* that this reason code can be passed to functions registered by
|
||||
* xpc_send_notify() (i.e. they don't have data arguments).
|
||||
*
|
||||
* Also, the first three reason codes in the following table indicate
|
||||
* success, whereas the others indicate failure. When a failure reason code
|
||||
* is received, one can assume that the channel is not connected.
|
||||
*
|
||||
*
|
||||
* Reason Code | Cause | Optional Data
|
||||
* =====================+================================+=====================
|
||||
* xpcConnected | connection has been established| max #of entries
|
||||
* | to the specified partition on | allowed in message
|
||||
* | the specified channel | queue
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcMsgReceived | an XPC message arrived from | address of payload
|
||||
* | the specified partition on the |
|
||||
* | specified channel | [the user must call
|
||||
* | | xpc_received() when
|
||||
* | | finished with the
|
||||
* | | payload]
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcMsgDelivered | notification that the message | NA
|
||||
* | was delivered to the intended |
|
||||
* | recipient and that they have |
|
||||
* | acknowledged its receipt by |
|
||||
* | calling xpc_received() |
|
||||
* =====================+================================+=====================
|
||||
* xpcUnequalMsgSizes | can't connect to the specified | NULL
|
||||
* | partition on the specified |
|
||||
* | channel because of mismatched |
|
||||
* | message sizes |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcNoMemory | insufficient memory avaiable | NULL
|
||||
* | to allocate message queue |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcLackOfResources | lack of resources to create | NULL
|
||||
* | the necessary kthreads to |
|
||||
* | support the channel |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcUnregistering | this side's user has | NULL or NA
|
||||
* | unregistered by calling |
|
||||
* | xpc_disconnect() |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcOtherUnregistering| the other side's user has | NULL or NA
|
||||
* | unregistered by calling |
|
||||
* | xpc_disconnect() |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcNoHeartbeat | the other side's XPC is no | NULL or NA
|
||||
* | longer heartbeating |
|
||||
* | |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcUnloading | this side's XPC module is | NULL or NA
|
||||
* | being unloaded |
|
||||
* | |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcOtherUnloading | the other side's XPC module is | NULL or NA
|
||||
* | is being unloaded |
|
||||
* | |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcPioReadError | xp_nofault_PIOR() returned an | NULL or NA
|
||||
* | error while sending an IPI |
|
||||
* | |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcInvalidAddress | the address either received or | NULL or NA
|
||||
* | sent by the specified partition|
|
||||
* | is invalid |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcBteNotAvailable | attempt to pull data from the | NULL or NA
|
||||
* xpcBtePoisonError | specified partition over the |
|
||||
* xpcBteWriteError | specified channel via a |
|
||||
* xpcBteAccessError | bte_copy() failed |
|
||||
* xpcBteTimeOutError | |
|
||||
* xpcBteXtalkError | |
|
||||
* xpcBteDirectoryError | |
|
||||
* xpcBteGenericError | |
|
||||
* xpcBteUnmappedError | |
|
||||
* ---------------------+--------------------------------+---------------------
|
||||
* xpcUnknownReason | the specified channel to the | NULL or NA
|
||||
* | specified partition was |
|
||||
* | unavailable for unknown reasons|
|
||||
* =====================+================================+=====================
|
||||
*/
|
||||
|
||||
typedef void (*xpc_channel_func)(enum xpc_retval reason, partid_t partid,
|
||||
int ch_number, void *data, void *key);
|
||||
|
||||
typedef void (*xpc_notify_func)(enum xpc_retval reason, partid_t partid,
|
||||
int ch_number, void *key);
|
||||
|
||||
|
||||
/*
|
||||
* The following is a registration entry. There is a global array of these,
|
||||
* one per channel. It is used to record the connection registration made
|
||||
* by the users of XPC. As long as a registration entry exists, for any
|
||||
* partition that comes up, XPC will attempt to establish a connection on
|
||||
* that channel. Notification that a connection has been made will occur via
|
||||
* the xpc_channel_func function.
|
||||
*
|
||||
* The 'func' field points to the function to call when aynchronous
|
||||
* notification is required for such events as: a connection established/lost,
|
||||
* or an incomming message received, or an error condition encountered. A
|
||||
* non-NULL 'func' field indicates that there is an active registration for
|
||||
* the channel.
|
||||
*/
|
||||
struct xpc_registration {
|
||||
struct semaphore sema;
|
||||
xpc_channel_func func; /* function to call */
|
||||
void *key; /* pointer to user's key */
|
||||
u16 nentries; /* #of msg entries in local msg queue */
|
||||
u16 msg_size; /* message queue's message size */
|
||||
u32 assigned_limit; /* limit on #of assigned kthreads */
|
||||
u32 idle_limit; /* limit on #of idle kthreads */
|
||||
} ____cacheline_aligned;
|
||||
|
||||
|
||||
#define XPC_CHANNEL_REGISTERED(_c) (xpc_registrations[_c].func != NULL)
|
||||
|
||||
|
||||
/* the following are valid xpc_allocate() flags */
|
||||
#define XPC_WAIT 0 /* wait flag */
|
||||
#define XPC_NOWAIT 1 /* no wait flag */
|
||||
|
||||
|
||||
struct xpc_interface {
|
||||
void (*connect)(int);
|
||||
void (*disconnect)(int);
|
||||
enum xpc_retval (*allocate)(partid_t, int, u32, void **);
|
||||
enum xpc_retval (*send)(partid_t, int, void *);
|
||||
enum xpc_retval (*send_notify)(partid_t, int, void *,
|
||||
xpc_notify_func, void *);
|
||||
void (*received)(partid_t, int, void *);
|
||||
enum xpc_retval (*partid_to_nasids)(partid_t, void *);
|
||||
};
|
||||
|
||||
|
||||
extern struct xpc_interface xpc_interface;
|
||||
|
||||
extern void xpc_set_interface(void (*)(int),
|
||||
void (*)(int),
|
||||
enum xpc_retval (*)(partid_t, int, u32, void **),
|
||||
enum xpc_retval (*)(partid_t, int, void *),
|
||||
enum xpc_retval (*)(partid_t, int, void *, xpc_notify_func,
|
||||
void *),
|
||||
void (*)(partid_t, int, void *),
|
||||
enum xpc_retval (*)(partid_t, void *));
|
||||
extern void xpc_clear_interface(void);
|
||||
|
||||
|
||||
extern enum xpc_retval xpc_connect(int, xpc_channel_func, void *, u16,
|
||||
u16, u32, u32);
|
||||
extern void xpc_disconnect(int);
|
||||
|
||||
static inline enum xpc_retval
|
||||
xpc_allocate(partid_t partid, int ch_number, u32 flags, void **payload)
|
||||
{
|
||||
return xpc_interface.allocate(partid, ch_number, flags, payload);
|
||||
}
|
||||
|
||||
static inline enum xpc_retval
|
||||
xpc_send(partid_t partid, int ch_number, void *payload)
|
||||
{
|
||||
return xpc_interface.send(partid, ch_number, payload);
|
||||
}
|
||||
|
||||
static inline enum xpc_retval
|
||||
xpc_send_notify(partid_t partid, int ch_number, void *payload,
|
||||
xpc_notify_func func, void *key)
|
||||
{
|
||||
return xpc_interface.send_notify(partid, ch_number, payload, func, key);
|
||||
}
|
||||
|
||||
static inline void
|
||||
xpc_received(partid_t partid, int ch_number, void *payload)
|
||||
{
|
||||
return xpc_interface.received(partid, ch_number, payload);
|
||||
}
|
||||
|
||||
static inline enum xpc_retval
|
||||
xpc_partid_to_nasids(partid_t partid, void *nasids)
|
||||
{
|
||||
return xpc_interface.partid_to_nasids(partid, nasids);
|
||||
}
|
||||
|
||||
|
||||
extern u64 xp_nofault_PIOR_target;
|
||||
extern int xp_nofault_PIOR(void *);
|
||||
extern int xp_error_PIOR(void);
|
||||
|
||||
|
||||
#endif /* _ASM_IA64_SN_XP_H */
|
||||
|
||||
@@ -114,20 +114,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -105,29 +105,20 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
old_sigset_t sa_mask;
|
||||
unsigned long sa_flags;
|
||||
void (*sa_restorer)(void);
|
||||
__sigrestore_t sa_restorer;
|
||||
};
|
||||
|
||||
struct sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
unsigned long sa_flags;
|
||||
void (*sa_restorer)(void);
|
||||
__sigrestore_t sa_restorer;
|
||||
sigset_t sa_mask; /* mask last for extensibility */
|
||||
};
|
||||
|
||||
|
||||
@@ -105,16 +105,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -103,14 +103,7 @@ typedef unsigned long old_sigset_t; /* at least 32 bits */
|
||||
#define SIG_SETMASK 3 /* for setting the signal mask */
|
||||
#define SIG_SETMASK32 256 /* Goodie from SGI for BSD compatibility:
|
||||
set only the low 32 bit of the sigset. */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
/* Fake signal functions */
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
struct sigaction {
|
||||
unsigned int sa_flags;
|
||||
|
||||
@@ -100,20 +100,7 @@ typedef struct {
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
struct old_sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
|
||||
@@ -97,33 +97,19 @@ typedef struct {
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void __sigfunction(int);
|
||||
typedef __sigfunction __user * __sighandler_t;
|
||||
|
||||
/* Type of the restorer function */
|
||||
typedef void __sigrestorer(void);
|
||||
typedef __sigrestorer __user * __sigrestorer_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
struct old_sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
old_sigset_t sa_mask;
|
||||
unsigned long sa_flags;
|
||||
__sigrestorer_t sa_restorer;
|
||||
__sigrestore_t sa_restorer;
|
||||
};
|
||||
|
||||
struct sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
unsigned long sa_flags;
|
||||
__sigrestorer_t sa_restorer;
|
||||
__sigrestore_t sa_restorer;
|
||||
sigset_t sa_mask; /* mask last for extensibility */
|
||||
};
|
||||
|
||||
|
||||
@@ -117,16 +117,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
+1
-10
@@ -108,16 +108,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -107,16 +107,7 @@ typedef struct {
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ THREAD_SIZE
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct old_sigaction {
|
||||
|
||||
@@ -227,7 +227,7 @@ static __inline__ void sun_fd_disable_dma(void)
|
||||
doing_pdma = 0;
|
||||
if (pdma_base) {
|
||||
mmu_unlockarea(pdma_base, pdma_areasize);
|
||||
pdma_base = 0;
|
||||
pdma_base = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -174,16 +174,7 @@ struct sigstack {
|
||||
#define SA_STATIC_ALLOC 0x80
|
||||
#endif
|
||||
|
||||
/* Type of a signal handler. */
|
||||
#ifdef __KERNEL__
|
||||
typedef void (*__sighandler_t)(int, int, struct sigcontext *, char *);
|
||||
#else
|
||||
typedef void (*__sighandler_t)(int);
|
||||
#endif
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct __new_sigaction {
|
||||
|
||||
@@ -13,6 +13,12 @@
|
||||
|
||||
#define PARPORT_PC_MAX_PORTS PARPORT_MAX
|
||||
|
||||
/*
|
||||
* While sparc64 doesn't have an ISA DMA API, we provide something that looks
|
||||
* close enough to make parport_pc happy
|
||||
*/
|
||||
#define HAS_DMA
|
||||
|
||||
static struct sparc_ebus_info {
|
||||
struct ebus_dma_info info;
|
||||
unsigned int addr;
|
||||
|
||||
@@ -177,21 +177,7 @@ struct sigstack {
|
||||
#define SA_STATIC_ALLOC 0x80
|
||||
#endif
|
||||
|
||||
/* Type of a signal handler. */
|
||||
#ifdef __KERNEL__
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
#else
|
||||
typedef void (*__sighandler_t)(int);
|
||||
typedef void (*__sigrestore_t)(void);
|
||||
#endif
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
struct __new_sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
|
||||
@@ -110,17 +110,7 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t)(int);
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
||||
@@ -116,21 +116,9 @@ typedef unsigned long sigset_t;
|
||||
#define MINSIGSTKSZ 2048
|
||||
#define SIGSTKSZ 8192
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
#include <asm-generic/signal.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/* Type of a signal handler. */
|
||||
typedef void __signalfn_t(int);
|
||||
typedef __signalfn_t __user *__sighandler_t;
|
||||
|
||||
typedef void __restorefn_t(void);
|
||||
typedef __restorefn_t __user *__sigrestore_t;
|
||||
|
||||
#define SIG_DFL ((__sighandler_t)0) /* default signal handling */
|
||||
#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
|
||||
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
|
||||
|
||||
struct sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
|
||||
+1
-2
@@ -671,6 +671,7 @@ struct pci_driver {
|
||||
int (*suspend) (struct pci_dev *dev, pm_message_t state); /* Device suspended */
|
||||
int (*resume) (struct pci_dev *dev); /* Device woken up */
|
||||
int (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable); /* Enable wake event */
|
||||
void (*shutdown) (struct pci_dev *dev);
|
||||
|
||||
struct device_driver driver;
|
||||
struct pci_dynids dynids;
|
||||
@@ -810,7 +811,6 @@ void pci_set_master(struct pci_dev *dev);
|
||||
int pci_set_mwi(struct pci_dev *dev);
|
||||
void pci_clear_mwi(struct pci_dev *dev);
|
||||
int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
|
||||
int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask);
|
||||
int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);
|
||||
int pci_assign_resource(struct pci_dev *dev, int i);
|
||||
|
||||
@@ -941,7 +941,6 @@ static inline void pci_set_master(struct pci_dev *dev) { }
|
||||
static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
|
||||
static inline void pci_disable_device(struct pci_dev *dev) { }
|
||||
static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }
|
||||
static inline int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; }
|
||||
static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;}
|
||||
static inline int pci_register_driver(struct pci_driver *drv) { return 0;}
|
||||
static inline void pci_unregister_driver(struct pci_driver *drv) { }
|
||||
|
||||
@@ -89,10 +89,14 @@ enum {
|
||||
RTM_GETANYCAST = 62,
|
||||
#define RTM_GETANYCAST RTM_GETANYCAST
|
||||
|
||||
RTM_MAX,
|
||||
#define RTM_MAX RTM_MAX
|
||||
__RTM_MAX,
|
||||
#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
|
||||
};
|
||||
|
||||
#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
|
||||
#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
|
||||
#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
|
||||
|
||||
/*
|
||||
Generic structure for encapsulation of optional route information.
|
||||
It is reminiscent of sockaddr, but with sa_family replaced
|
||||
|
||||
@@ -140,8 +140,11 @@ enum {
|
||||
XFRM_MSG_FLUSHPOLICY,
|
||||
#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
|
||||
|
||||
XFRM_MSG_MAX
|
||||
__XFRM_MSG_MAX
|
||||
};
|
||||
#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
|
||||
|
||||
#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
|
||||
|
||||
struct xfrm_user_tmpl {
|
||||
struct xfrm_id id;
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#define IPV6_MAX_ADDRESSES 16
|
||||
|
||||
#include <linux/in6.h>
|
||||
|
||||
struct prefix_info {
|
||||
__u8 type;
|
||||
__u8 length;
|
||||
@@ -43,9 +45,9 @@ struct prefix_info {
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/in6.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <net/if_inet6.h>
|
||||
#include <net/ipv6.h>
|
||||
|
||||
#define IN6_ADDR_HSIZE 16
|
||||
|
||||
|
||||
@@ -157,7 +157,8 @@ psched_tod_diff(int delta_sec, int bound)
|
||||
case 1: \
|
||||
__delta += 1000000; \
|
||||
case 0: \
|
||||
__delta = abs(__delta); \
|
||||
if (__delta > bound || __delta < 0) \
|
||||
__delta = bound; \
|
||||
} \
|
||||
__delta; \
|
||||
})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef _NET_XFRM_H
|
||||
#define _NET_XFRM_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/xfrm.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/list.h>
|
||||
@@ -516,6 +517,15 @@ struct xfrm_dst
|
||||
u32 child_mtu_cached;
|
||||
};
|
||||
|
||||
static inline void xfrm_dst_destroy(struct xfrm_dst *xdst)
|
||||
{
|
||||
dst_release(xdst->route);
|
||||
if (likely(xdst->u.dst.xfrm))
|
||||
xfrm_state_put(xdst->u.dst.xfrm);
|
||||
}
|
||||
|
||||
extern void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev);
|
||||
|
||||
/* Decapsulation state, used by the input to store data during
|
||||
* decapsulation procedure, to be used later (during the policy
|
||||
* check
|
||||
|
||||
Reference in New Issue
Block a user