Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge
Fix up delete/modify conflict of arch/ppc/kernel/process.c by hand (it's gone, gone, gone). Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
@@ -64,25 +64,6 @@ extern void iommu_free_table(struct device_node *dn);
|
||||
|
||||
#endif /* CONFIG_PPC_MULTIPLATFORM */
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
|
||||
/* Creates table for an individual device node */
|
||||
extern void iommu_devnode_init_pSeries(struct device_node *dn);
|
||||
|
||||
#endif /* CONFIG_PPC_PSERIES */
|
||||
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
|
||||
/* Creates table for an individual device node */
|
||||
extern void iommu_devnode_init_iSeries(struct device_node *dn);
|
||||
/* Get table parameters from HV */
|
||||
extern void iommu_table_getparms_iSeries(unsigned long busno,
|
||||
unsigned char slotno,
|
||||
unsigned char virtbus,
|
||||
struct iommu_table* tbl);
|
||||
|
||||
#endif /* CONFIG_PPC_ISERIES */
|
||||
|
||||
/* Initializes an iommu_table based in values set in the passed-in
|
||||
* structure
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* HvCall.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -15,8 +14,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* This file contains the "hypervisor call" interface which is used to
|
||||
* drive the hypervisor from the OS.
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* HvCallEvent.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -15,8 +14,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* This file contains the "hypervisor call" interface which is used to
|
||||
* drive the hypervisor from the OS.
|
||||
*/
|
||||
@@ -33,32 +31,9 @@ typedef u8 HvLpEvent_Type;
|
||||
typedef u8 HvLpEvent_AckInd;
|
||||
typedef u8 HvLpEvent_AckType;
|
||||
|
||||
struct HvCallEvent_PackedParms {
|
||||
u8 xAckType:1;
|
||||
u8 xAckInd:1;
|
||||
u8 xRsvd:1;
|
||||
u8 xTargetLp:5;
|
||||
u8 xType;
|
||||
u16 xSubtype;
|
||||
HvLpInstanceId xSourceInstId;
|
||||
HvLpInstanceId xTargetInstId;
|
||||
};
|
||||
|
||||
typedef u8 HvLpDma_Direction;
|
||||
typedef u8 HvLpDma_AddressType;
|
||||
|
||||
struct HvCallEvent_PackedDmaParms {
|
||||
u8 xDirection:1;
|
||||
u8 xLocalAddrType:1;
|
||||
u8 xRemoteAddrType:1;
|
||||
u8 xRsvd1:5;
|
||||
HvLpIndex xRemoteLp;
|
||||
u8 xType;
|
||||
u8 xRsvd2;
|
||||
HvLpInstanceId xLocalInstId;
|
||||
HvLpInstanceId xRemoteInstId;
|
||||
};
|
||||
|
||||
typedef u64 HvLpEvent_Rc;
|
||||
typedef u64 HvLpDma_Rc;
|
||||
|
||||
@@ -92,11 +67,8 @@ static inline void HvCallEvent_setInterLpQueueIndex(u8 queueIndex)
|
||||
static inline void HvCallEvent_setLpEventStack(u8 queueIndex,
|
||||
char *eventStackAddr, u32 eventStackSize)
|
||||
{
|
||||
u64 abs_addr;
|
||||
|
||||
abs_addr = virt_to_abs(eventStackAddr);
|
||||
HvCall3(HvCallEventSetLpEventStack, queueIndex, abs_addr,
|
||||
eventStackSize);
|
||||
HvCall3(HvCallEventSetLpEventStack, queueIndex,
|
||||
virt_to_abs(eventStackAddr), eventStackSize);
|
||||
}
|
||||
|
||||
static inline void HvCallEvent_setLpEventQueueInterruptProc(u8 queueIndex,
|
||||
@@ -108,14 +80,7 @@ static inline void HvCallEvent_setLpEventQueueInterruptProc(u8 queueIndex,
|
||||
|
||||
static inline HvLpEvent_Rc HvCallEvent_signalLpEvent(struct HvLpEvent *event)
|
||||
{
|
||||
u64 abs_addr;
|
||||
|
||||
#ifdef DEBUG_SENDEVENT
|
||||
printk("HvCallEvent_signalLpEvent: *event = %016lx\n ",
|
||||
(unsigned long)event);
|
||||
#endif
|
||||
abs_addr = virt_to_abs(event);
|
||||
return HvCall1(HvCallEventSignalLpEvent, abs_addr);
|
||||
return HvCall1(HvCallEventSignalLpEvent, virt_to_abs(event));
|
||||
}
|
||||
|
||||
static inline HvLpEvent_Rc HvCallEvent_signalLpEventFast(HvLpIndex targetLp,
|
||||
@@ -127,17 +92,21 @@ static inline HvLpEvent_Rc HvCallEvent_signalLpEventFast(HvLpIndex targetLp,
|
||||
{
|
||||
/* Pack the misc bits into a single Dword to pass to PLIC */
|
||||
union {
|
||||
struct HvCallEvent_PackedParms parms;
|
||||
struct {
|
||||
u8 ack_and_target;
|
||||
u8 type;
|
||||
u16 subtype;
|
||||
HvLpInstanceId src_inst;
|
||||
HvLpInstanceId target_inst;
|
||||
} parms;
|
||||
u64 dword;
|
||||
} packed;
|
||||
packed.parms.xAckType = ackType;
|
||||
packed.parms.xAckInd = ackInd;
|
||||
packed.parms.xRsvd = 0;
|
||||
packed.parms.xTargetLp = targetLp;
|
||||
packed.parms.xType = type;
|
||||
packed.parms.xSubtype = subtype;
|
||||
packed.parms.xSourceInstId = sourceInstanceId;
|
||||
packed.parms.xTargetInstId = targetInstanceId;
|
||||
|
||||
packed.parms.ack_and_target = (ackType << 7) | (ackInd << 6) | targetLp;
|
||||
packed.parms.type = type;
|
||||
packed.parms.subtype = subtype;
|
||||
packed.parms.src_inst = sourceInstanceId;
|
||||
packed.parms.target_inst = targetInstanceId;
|
||||
|
||||
return HvCall7(HvCallEventSignalLpEventParms, packed.dword,
|
||||
correlationToken, eventData1, eventData2,
|
||||
@@ -146,18 +115,12 @@ static inline HvLpEvent_Rc HvCallEvent_signalLpEventFast(HvLpIndex targetLp,
|
||||
|
||||
static inline HvLpEvent_Rc HvCallEvent_ackLpEvent(struct HvLpEvent *event)
|
||||
{
|
||||
u64 abs_addr;
|
||||
|
||||
abs_addr = virt_to_abs(event);
|
||||
return HvCall1(HvCallEventAckLpEvent, abs_addr);
|
||||
return HvCall1(HvCallEventAckLpEvent, virt_to_abs(event));
|
||||
}
|
||||
|
||||
static inline HvLpEvent_Rc HvCallEvent_cancelLpEvent(struct HvLpEvent *event)
|
||||
{
|
||||
u64 abs_addr;
|
||||
|
||||
abs_addr = virt_to_abs(event);
|
||||
return HvCall1(HvCallEventCancelLpEvent, abs_addr);
|
||||
return HvCall1(HvCallEventCancelLpEvent, virt_to_abs(event));
|
||||
}
|
||||
|
||||
static inline HvLpInstanceId HvCallEvent_getSourceLpInstanceId(
|
||||
@@ -195,59 +158,34 @@ static inline HvLpDma_Rc HvCallEvent_dmaBufList(HvLpEvent_Type type,
|
||||
{
|
||||
/* Pack the misc bits into a single Dword to pass to PLIC */
|
||||
union {
|
||||
struct HvCallEvent_PackedDmaParms parms;
|
||||
struct {
|
||||
u8 flags;
|
||||
HvLpIndex remote;
|
||||
u8 type;
|
||||
u8 reserved;
|
||||
HvLpInstanceId local_inst;
|
||||
HvLpInstanceId remote_inst;
|
||||
} parms;
|
||||
u64 dword;
|
||||
} packed;
|
||||
|
||||
packed.parms.xDirection = direction;
|
||||
packed.parms.xLocalAddrType = localAddressType;
|
||||
packed.parms.xRemoteAddrType = remoteAddressType;
|
||||
packed.parms.xRsvd1 = 0;
|
||||
packed.parms.xRemoteLp = remoteLp;
|
||||
packed.parms.xType = type;
|
||||
packed.parms.xRsvd2 = 0;
|
||||
packed.parms.xLocalInstId = localInstanceId;
|
||||
packed.parms.xRemoteInstId = remoteInstanceId;
|
||||
packed.parms.flags = (direction << 7) |
|
||||
(localAddressType << 6) | (remoteAddressType << 5);
|
||||
packed.parms.remote = remoteLp;
|
||||
packed.parms.type = type;
|
||||
packed.parms.reserved = 0;
|
||||
packed.parms.local_inst = localInstanceId;
|
||||
packed.parms.remote_inst = remoteInstanceId;
|
||||
|
||||
return HvCall4(HvCallEventDmaBufList, packed.dword, localBufList,
|
||||
remoteBufList, transferLength);
|
||||
}
|
||||
|
||||
static inline HvLpDma_Rc HvCallEvent_dmaSingle(HvLpEvent_Type type,
|
||||
HvLpIndex remoteLp, HvLpDma_Direction direction,
|
||||
HvLpInstanceId localInstanceId,
|
||||
HvLpInstanceId remoteInstanceId,
|
||||
HvLpDma_AddressType localAddressType,
|
||||
HvLpDma_AddressType remoteAddressType,
|
||||
u64 localAddrOrTce, u64 remoteAddrOrTce, u32 transferLength)
|
||||
{
|
||||
/* Pack the misc bits into a single Dword to pass to PLIC */
|
||||
union {
|
||||
struct HvCallEvent_PackedDmaParms parms;
|
||||
u64 dword;
|
||||
} packed;
|
||||
|
||||
packed.parms.xDirection = direction;
|
||||
packed.parms.xLocalAddrType = localAddressType;
|
||||
packed.parms.xRemoteAddrType = remoteAddressType;
|
||||
packed.parms.xRsvd1 = 0;
|
||||
packed.parms.xRemoteLp = remoteLp;
|
||||
packed.parms.xType = type;
|
||||
packed.parms.xRsvd2 = 0;
|
||||
packed.parms.xLocalInstId = localInstanceId;
|
||||
packed.parms.xRemoteInstId = remoteInstanceId;
|
||||
|
||||
return (HvLpDma_Rc)HvCall4(HvCallEventDmaSingle, packed.dword,
|
||||
localAddrOrTce, remoteAddrOrTce, transferLength);
|
||||
}
|
||||
|
||||
static inline HvLpDma_Rc HvCallEvent_dmaToSp(void *local, u32 remote,
|
||||
u32 length, HvLpDma_Direction dir)
|
||||
{
|
||||
u64 abs_addr;
|
||||
|
||||
abs_addr = virt_to_abs(local);
|
||||
return HvCall4(HvCallEventDmaToSp, abs_addr, remote, length, dir);
|
||||
return HvCall4(HvCallEventDmaToSp, virt_to_abs(local), remote,
|
||||
length, dir);
|
||||
}
|
||||
|
||||
#endif /* _ASM_POWERPC_ISERIES_HV_CALL_EVENT_H */
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* HvCallSc.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* HvLpConfig.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* HvLpEvent.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -32,17 +31,8 @@
|
||||
* partitions through PLIC.
|
||||
*/
|
||||
|
||||
struct HvEventFlags {
|
||||
u8 xValid:1; /* Indicates a valid request x00-x00 */
|
||||
u8 xRsvd1:4; /* Reserved ... */
|
||||
u8 xAckType:1; /* Immediate or deferred ... */
|
||||
u8 xAckInd:1; /* Indicates if ACK required ... */
|
||||
u8 xFunction:1; /* Interrupt or Acknowledge ... */
|
||||
};
|
||||
|
||||
|
||||
struct HvLpEvent {
|
||||
struct HvEventFlags xFlags; /* Event flags x00-x00 */
|
||||
u8 flags; /* Event flags x00-x00 */
|
||||
u8 xType; /* Type of message x01-x01 */
|
||||
u16 xSubtype; /* Subtype for event x02-x03 */
|
||||
u8 xSourceLp; /* Source LP x04-x04 */
|
||||
@@ -126,6 +116,11 @@ extern int HvLpEvent_closePath(HvLpEvent_Type eventType, HvLpIndex lpIndex);
|
||||
#define HvLpEvent_AckType_ImmediateAck 0
|
||||
#define HvLpEvent_AckType_DeferredAck 1
|
||||
|
||||
#define HV_LP_EVENT_INT 0x01
|
||||
#define HV_LP_EVENT_DO_ACK 0x02
|
||||
#define HV_LP_EVENT_DEFERRED_ACK 0x04
|
||||
#define HV_LP_EVENT_VALID 0x80
|
||||
|
||||
#define HvLpDma_Direction_LocalToRemote 0
|
||||
#define HvLpDma_Direction_RemoteToLocal 1
|
||||
|
||||
@@ -139,4 +134,29 @@ extern int HvLpEvent_closePath(HvLpEvent_Type eventType, HvLpIndex lpIndex);
|
||||
#define HvLpDma_Rc_InvalidAddress 4
|
||||
#define HvLpDma_Rc_InvalidLength 5
|
||||
|
||||
static inline int hvlpevent_is_valid(struct HvLpEvent *h)
|
||||
{
|
||||
return h->flags & HV_LP_EVENT_VALID;
|
||||
}
|
||||
|
||||
static inline void hvlpevent_invalidate(struct HvLpEvent *h)
|
||||
{
|
||||
h->flags &= ~ HV_LP_EVENT_VALID;
|
||||
}
|
||||
|
||||
static inline int hvlpevent_is_int(struct HvLpEvent *h)
|
||||
{
|
||||
return h->flags & HV_LP_EVENT_INT;
|
||||
}
|
||||
|
||||
static inline int hvlpevent_is_ack(struct HvLpEvent *h)
|
||||
{
|
||||
return !hvlpevent_is_int(h);
|
||||
}
|
||||
|
||||
static inline int hvlpevent_need_ack(struct HvLpEvent *h)
|
||||
{
|
||||
return h->flags & HV_LP_EVENT_DO_ACK;
|
||||
}
|
||||
|
||||
#endif /* _ASM_POWERPC_ISERIES_HV_LP_EVENT_H */
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* HvTypes.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
#include <linux/types.h>
|
||||
/*
|
||||
* File iSeries_io.h created by Allan Trautman on Thu Dec 28 2000.
|
||||
* Created by Allan Trautman on Thu Dec 28 2000.
|
||||
*
|
||||
* Remaps the io.h for the iSeries Io
|
||||
* Copyright (C) 2000 Allan H Trautman, IBM Corporation
|
||||
@@ -32,6 +32,7 @@
|
||||
* End Change Activity
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
extern u8 iSeries_Read_Byte(const volatile void __iomem * IoAddress);
|
||||
extern u16 iSeries_Read_Word(const volatile void __iomem * IoAddress);
|
||||
extern u32 iSeries_Read_Long(const volatile void __iomem * IoAddress);
|
||||
@@ -44,6 +45,17 @@ extern void iSeries_memcpy_toio(volatile void __iomem *dest, void *source,
|
||||
size_t n);
|
||||
extern void iSeries_memcpy_fromio(void *dest,
|
||||
const volatile void __iomem *source, size_t n);
|
||||
#else
|
||||
static inline u8 iSeries_Read_Byte(const volatile void __iomem *IoAddress)
|
||||
{
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
static inline void iSeries_Write_Byte(u8 IoData,
|
||||
volatile void __iomem *IoAddress)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
#endif /* CONFIG_PPC_ISERIES */
|
||||
#endif /* _ASM_POWERPC_ISERIES_ISERIES_IO_H */
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* ItExtVpdPanel.h
|
||||
* Copyright (C) 2002 Dave Boutcher IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* ItLpNaca.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -37,17 +36,13 @@ struct ItLpNaca {
|
||||
u8 xLpIndex; // LP Index x0B-x0B
|
||||
u16 xMaxLpQueues; // Number of allocated queues x0C-x0D
|
||||
u16 xLpQueueOffset; // Offset to start of LP queues x0E-x0F
|
||||
u8 xPirEnvironMode:8; // Piranha or hardware x10-x10
|
||||
u8 xPirConsoleMode:8; // Piranha console indicator x11-x11
|
||||
u8 xPirDasdMode:8; // Piranha dasd indicator x12-x12
|
||||
u8 xPirEnvironMode; // Piranha or hardware x10-x10
|
||||
u8 xPirConsoleMode; // Piranha console indicator x11-x11
|
||||
u8 xPirDasdMode; // Piranha dasd indicator x12-x12
|
||||
u8 xRsvd1_0[5]; // Reserved for Piranha related x13-x17
|
||||
u8 xLparInstalled:1; // Is LPAR installed on system x18-x1F
|
||||
u8 xSysPartitioned:1; // Is the system partitioned ...
|
||||
u8 xHwSyncedTBs:1; // Hardware synced TBs ...
|
||||
u8 xIntProcUtilHmt:1; // Utilize HMT for interrupts ...
|
||||
u8 xRsvd1_1:4; // Reserved ...
|
||||
u8 xSpVpdFormat:8; // VPD areas are in CSP format ...
|
||||
u8 xIntProcRatio:8; // Ratio of int procs to procs ...
|
||||
u8 flags; // flags, see below x18-x1F
|
||||
u8 xSpVpdFormat; // VPD areas are in CSP format ...
|
||||
u8 xIntProcRatio; // Ratio of int procs to procs ...
|
||||
u8 xRsvd1_2[5]; // Reserved ...
|
||||
u16 xRsvd1_3; // Reserved x20-x21
|
||||
u16 xPlicVrmIndex; // VRM index of PLIC x22-x23
|
||||
@@ -77,4 +72,9 @@ struct ItLpNaca {
|
||||
|
||||
extern struct ItLpNaca itLpNaca;
|
||||
|
||||
#define ITLPNACA_LPAR 0x80 /* Is LPAR installed on the system */
|
||||
#define ITLPNACA_PARTITIONED 0x40 /* Is the system partitioned */
|
||||
#define ITLPNACA_HWSYNCEDTBS 0x20 /* Hardware synced TBs */
|
||||
#define ITLPNACA_HMTINT 0x10 /* Utilize MHT for interrupts */
|
||||
|
||||
#endif /* _ASM_POWERPC_ISERIES_IT_LP_NACA_H */
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* ItLpQueue.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* ItLpRegSave.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -83,4 +82,4 @@ struct ItLpRegSave {
|
||||
|
||||
extern struct ItLpRegSave iseries_reg_save[];
|
||||
|
||||
#endif /* _ITLPREGSAVE_H */
|
||||
#endif /* _ASM_POWERPC_ISERIES_IT_LP_REG_SAVE_H */
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* LparMap.h
|
||||
* Copyright (C) 2001 Mike Corrigan IBM Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* mf.h
|
||||
* Copyright (C) 2001 Troy D. Armstrong IBM Corporation
|
||||
* Copyright (C) 2004 Stephen Rothwell IBM Corporation
|
||||
*
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/* -*- linux-c -*-
|
||||
* drivers/char/vio.h
|
||||
*
|
||||
* iSeries Virtual I/O Message Path header
|
||||
*
|
||||
|
||||
@@ -142,8 +142,6 @@ void pcibios_fixup_new_pci_devices(struct pci_bus *bus, int fix_bus);
|
||||
|
||||
extern int pcibios_remove_root_bus(struct pci_controller *phb);
|
||||
|
||||
extern void phbs_remap_io(void);
|
||||
|
||||
static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
|
||||
{
|
||||
struct device_node *busdn = bus->sysdata;
|
||||
|
||||
@@ -133,6 +133,14 @@ extern int fix_alignment(struct pt_regs *);
|
||||
extern void cvt_fd(float *from, double *to, struct thread_struct *thread);
|
||||
extern void cvt_df(double *from, float *to, struct thread_struct *thread);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
extern void discard_lazy_cpu_state(void);
|
||||
#else
|
||||
static inline void discard_lazy_cpu_state(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
extern void flush_altivec_to_thread(struct task_struct *);
|
||||
#else
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#ifndef __PPC_SYSTEM_H
|
||||
#define __PPC_SYSTEM_H
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
@@ -39,7 +38,7 @@
|
||||
#ifdef CONFIG_SMP
|
||||
#define smp_mb() mb()
|
||||
#define smp_rmb() rmb()
|
||||
#define smp_wmb() wmb()
|
||||
#define smp_wmb() __asm__ __volatile__ ("eieio" : : : "memory")
|
||||
#define smp_read_barrier_depends() read_barrier_depends()
|
||||
#else
|
||||
#define smp_mb() barrier()
|
||||
@@ -74,6 +73,7 @@ extern void chrp_nvram_init(void);
|
||||
extern void read_rtc_time(void);
|
||||
extern void pmac_find_display(void);
|
||||
extern void giveup_fpu(struct task_struct *);
|
||||
extern void disable_kernel_fp(void);
|
||||
extern void enable_kernel_fp(void);
|
||||
extern void flush_fp_to_thread(struct task_struct *);
|
||||
extern void enable_kernel_altivec(void);
|
||||
@@ -86,6 +86,14 @@ extern int fix_alignment(struct pt_regs *);
|
||||
extern void cvt_fd(float *from, double *to, struct thread_struct *thread);
|
||||
extern void cvt_df(double *from, float *to, struct thread_struct *thread);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
extern void discard_lazy_cpu_state(void);
|
||||
#else
|
||||
static inline void discard_lazy_cpu_state(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
extern void flush_altivec_to_thread(struct task_struct *);
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user