Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge

This commit is contained in:
Linus Torvalds
2006-01-11 08:16:57 -08:00
32 changed files with 375 additions and 126 deletions
+49 -34
View File
@@ -71,15 +71,39 @@ config ARCH_MAY_HAVE_PC_FDC
bool bool
default y default y
config PPC_OF
def_bool y
config PPC_UDBG_16550
bool
default n
config CRASH_DUMP
bool "kernel crash dumps (EXPERIMENTAL)"
depends on PPC_MULTIPLATFORM
depends on EXPERIMENTAL
help
Build a kernel suitable for use as a kdump capture kernel.
The kernel will be linked at a different address than normal, and
so can only be used for Kdump.
Don't change this unless you know what you are doing.
config GENERIC_TBSYNC
bool
default y if PPC32 && SMP
default n
menu "Processor support" menu "Processor support"
choice choice
prompt "Processor Type" prompt "Processor Type"
depends on PPC32 depends on PPC32
default 6xx default 6xx
config 6xx config CLASSIC32
bool "6xx/7xx/74xx" bool "6xx/7xx/74xx"
select PPC_FPU select PPC_FPU
select 6xx
help help
There are four families of PowerPC chips supported. The more common There are four families of PowerPC chips supported. The more common
types (601, 603, 604, 740, 750, 7400), the Motorola embedded types (601, 603, 604, 740, 750, 7400), the Motorola embedded
@@ -93,12 +117,20 @@ config 6xx
config PPC_52xx config PPC_52xx
bool "Freescale 52xx" bool "Freescale 52xx"
select 6xx
select PPC_FPU
config PPC_82xx config PPC_82xx
bool "Freescale 82xx" bool "Freescale 82xx"
select 6xx
select PPC_FPU
config PPC_83xx config PPC_83xx
bool "Freescale 83xx" bool "Freescale 83xx"
select 6xx
select FSL_SOC
select 83xx
select PPC_FPU
config 40x config 40x
bool "AMCC 40x" bool "AMCC 40x"
@@ -134,6 +166,13 @@ config POWER4
depends on PPC64 depends on PPC64
def_bool y def_bool y
config 6xx
bool
# this is temp to handle compat with arch=ppc
config 83xx
bool
config PPC_FPU config PPC_FPU
bool bool
default y if PPC64 default y if PPC64
@@ -166,7 +205,7 @@ config PHYS_64BIT
config ALTIVEC config ALTIVEC
bool "AltiVec Support" bool "AltiVec Support"
depends on 6xx || POWER4 depends on CLASSIC32 || POWER4
---help--- ---help---
This option enables kernel support for the Altivec extensions to the This option enables kernel support for the Altivec extensions to the
PowerPC processor. The kernel currently supports saving and restoring PowerPC processor. The kernel currently supports saving and restoring
@@ -239,7 +278,7 @@ endmenu
source "init/Kconfig" source "init/Kconfig"
menu "Platform support" menu "Platform support"
depends on PPC64 || 6xx depends on PPC64 || CLASSIC32
choice choice
prompt "Machine type" prompt "Machine type"
@@ -330,9 +369,6 @@ config PPC_CELL
select MMIO_NVRAM select MMIO_NVRAM
select PPC_UDBG_16550 select PPC_UDBG_16550
config PPC_OF
def_bool y
config XICS config XICS
depends on PPC_PSERIES depends on PPC_PSERIES
bool bool
@@ -375,26 +411,11 @@ config MPIC_BROKEN_U3
depends on PPC_MAPLE depends on PPC_MAPLE
default y default y
config PPC_UDBG_16550
bool
default n
config CELL_IIC config CELL_IIC
depends on PPC_CELL depends on PPC_CELL
bool bool
default y default y
config CRASH_DUMP
bool "kernel crash dumps (EXPERIMENTAL)"
depends on PPC_MULTIPLATFORM
depends on EXPERIMENTAL
help
Build a kernel suitable for use as a kdump capture kernel.
The kernel will be linked at a different address than normal, and
so can only be used for Kdump.
Don't change this unless you know what you are doing.
config IBMVIO config IBMVIO
depends on PPC_PSERIES || PPC_ISERIES depends on PPC_PSERIES || PPC_ISERIES
bool bool
@@ -410,11 +431,6 @@ config PPC_MPC106
bool bool
default n default n
config GENERIC_TBSYNC
bool
default y if PPC32 && SMP
default n
source "drivers/cpufreq/Kconfig" source "drivers/cpufreq/Kconfig"
config CPU_FREQ_PMAC config CPU_FREQ_PMAC
@@ -495,6 +511,7 @@ endmenu
source arch/powerpc/platforms/embedded6xx/Kconfig source arch/powerpc/platforms/embedded6xx/Kconfig
source arch/powerpc/platforms/4xx/Kconfig source arch/powerpc/platforms/4xx/Kconfig
source arch/powerpc/platforms/83xx/Kconfig
source arch/powerpc/platforms/85xx/Kconfig source arch/powerpc/platforms/85xx/Kconfig
source arch/powerpc/platforms/8xx/Kconfig source arch/powerpc/platforms/8xx/Kconfig
source arch/powerpc/platforms/cell/Kconfig source arch/powerpc/platforms/cell/Kconfig
@@ -718,7 +735,7 @@ config PPC_I8259
config PPC_INDIRECT_PCI config PPC_INDIRECT_PCI
bool bool
depends on PCI depends on PCI
default y if 40x || 44x || 85xx || 83xx default y if 40x || 44x || 85xx
default n default n
config EISA config EISA
@@ -727,13 +744,16 @@ config EISA
config SBUS config SBUS
bool bool
config FSL_SOC
bool
# Yes MCA RS/6000s exist but Linux-PPC does not currently support any # Yes MCA RS/6000s exist but Linux-PPC does not currently support any
config MCA config MCA
bool bool
config PCI config PCI
bool "PCI support" if 40x || CPM2 || 83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES) bool "PCI support" if 40x || CPM2 || PPC_83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES)
default y if !40x && !CPM2 && !8xx && !APUS && !83xx && !85xx default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx && !85xx
default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS
default PCI_QSPAN if !4xx && !CPM2 && 8xx default PCI_QSPAN if !4xx && !CPM2 && 8xx
help help
@@ -746,11 +766,6 @@ config PCI_DOMAINS
bool bool
default PCI default PCI
config MPC83xx_PCI2
bool " Supprt for 2nd PCI host controller"
depends on PCI && MPC834x
default y if MPC834x_SYS
config PCI_QSPAN config PCI_QSPAN
bool "QSpan PCI" bool "QSpan PCI"
depends on !4xx && !CPM2 && 8xx depends on !4xx && !CPM2 && 8xx
+42
View File
@@ -115,4 +115,46 @@ config PPC_OCP
depends on IBM_OCP || XILINX_OCP depends on IBM_OCP || XILINX_OCP
default y default y
choice
prompt "Early debugging (dangerous)"
bool
optional
help
Enable early debugging. Careful, if you enable debugging for the
wrong type of machine your kernel _will not boot_.
config PPC_EARLY_DEBUG_LPAR
bool "LPAR HV Console"
depends on PPC_PSERIES
help
Select this to enable early debugging for a machine with a HVC
console on vterm 0.
config PPC_EARLY_DEBUG_G5
bool "Apple G5"
depends on PPC_PMAC64
help
Select this to enable early debugging for Apple G5 machines.
config PPC_EARLY_DEBUG_RTAS
bool "RTAS Panel"
depends on PPC_RTAS
help
Select this to enable early debugging via the RTAS panel.
config PPC_EARLY_DEBUG_MAPLE
bool "Maple real mode"
depends on PPC_MAPLE
help
Select this to enable early debugging for Maple.
config PPC_EARLY_DEBUG_ISERIES
bool "iSeries HV Console"
depends on PPC_ISERIES
help
Select this to enable early debugging for legacy iSeries. You need
to hit "Ctrl-x Ctrl-x" to see the messages on the console.
endchoice
endmenu endmenu
+20
View File
@@ -0,0 +1,20 @@
addnote
infblock.c
infblock.h
infcodes.c
infcodes.h
inffast.c
inffast.h
inflate.c
inftrees.c
inftrees.h
infutil.c
infutil.h
kernel-vmlinux.strip.c
kernel-vmlinux.strip.gz
uImage
zImage
zImage.vmode
zconf.h
zlib.h
zutil.h
+1 -1
View File
@@ -176,4 +176,4 @@ $(obj)/uImage: $(obj)/vmlinux.gz
install: $(CONFIGURE) $(BOOTIMAGE) install: $(CONFIGURE) $(BOOTIMAGE)
sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" "$(BOOTIMAGE)" sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" "$(BOOTIMAGE)"
clean-files := $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip) clean-files += $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip)
+1 -1
View File
@@ -878,7 +878,7 @@ CONFIG_HVCS=m
# #
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_RTC is not set # CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set CONFIG_GEN_RTC=y
# CONFIG_DTLK is not set # CONFIG_DTLK is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
+2 -2
View File
@@ -61,9 +61,9 @@ obj-$(CONFIG_MODULES) += $(module-y)
pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o pci_iommu.o \ pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o pci_iommu.o \
pci_direct_iommu.o iomap.o pci_direct_iommu.o iomap.o
obj-$(CONFIG_PCI) += $(pci64-y) obj-$(CONFIG_PCI) += $(pci64-y)
kexec-$(CONFIG_PPC64) := machine_kexec_64.o kexec-$(CONFIG_PPC64) := machine_kexec_64.o crash.o
kexec-$(CONFIG_PPC32) := machine_kexec_32.o kexec-$(CONFIG_PPC32) := machine_kexec_32.o
obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y) obj-$(CONFIG_KEXEC) += machine_kexec.o $(kexec-y)
ifeq ($(CONFIG_PPC_ISERIES),y) ifeq ($(CONFIG_PPC_ISERIES),y)
$(obj)/head_64.o: $(obj)/lparmap.s $(obj)/head_64.o: $(obj)/lparmap.s
+1 -1
View File
@@ -18,7 +18,6 @@
#include <linux/kexec.h> #include <linux/kexec.h>
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/crash_dump.h> #include <linux/crash_dump.h>
#include <linux/irq.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/elf.h> #include <linux/elf.h>
#include <linux/elfcore.h> #include <linux/elfcore.h>
@@ -30,6 +29,7 @@
#include <asm/kdump.h> #include <asm/kdump.h>
#include <asm/lmb.h> #include <asm/lmb.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/smp.h>
#ifdef DEBUG #ifdef DEBUG
#include <asm/udbg.h> #include <asm/udbg.h>
+2
View File
@@ -55,6 +55,7 @@ void __init kdump_setup(void)
DBG(" <- kdump_setup()\n"); DBG(" <- kdump_setup()\n");
} }
#ifdef CONFIG_PROC_VMCORE
static int __init parse_elfcorehdr(char *p) static int __init parse_elfcorehdr(char *p)
{ {
if (p) if (p)
@@ -63,6 +64,7 @@ static int __init parse_elfcorehdr(char *p)
return 0; return 0;
} }
__setup("elfcorehdr=", parse_elfcorehdr); __setup("elfcorehdr=", parse_elfcorehdr);
#endif
static int __init parse_savemaxmem(char *p) static int __init parse_savemaxmem(char *p)
{ {
-6
View File
@@ -14,12 +14,6 @@
#include <linux/threads.h> #include <linux/threads.h>
#include <asm/machdep.h> #include <asm/machdep.h>
/*
* Provide a dummy crash_notes definition until crash dump is implemented.
* This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
*/
note_buf_t crash_notes[NR_CPUS];
void machine_crash_shutdown(struct pt_regs *regs) void machine_crash_shutdown(struct pt_regs *regs)
{ {
if (ppc_md.machine_crash_shutdown) if (ppc_md.machine_crash_shutdown)
+3
View File
@@ -271,6 +271,9 @@ void __devinit pcibios_claim_one_bus(struct pci_bus *b)
list_for_each_entry(child_bus, &b->children, node) list_for_each_entry(child_bus, &b->children, node)
pcibios_claim_one_bus(child_bus); pcibios_claim_one_bus(child_bus);
} }
#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL_GPL(pcibios_claim_one_bus);
#endif
#ifndef CONFIG_PPC_ISERIES #ifndef CONFIG_PPC_ISERIES
static void __init pcibios_claim_of_setup(void) static void __init pcibios_claim_of_setup(void)
+9 -3
View File
@@ -29,6 +29,7 @@
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/lmb.h> #include <asm/lmb.h>
#include <asm/udbg.h>
struct rtas_t rtas = { struct rtas_t rtas = {
.lock = SPIN_LOCK_UNLOCKED .lock = SPIN_LOCK_UNLOCKED
@@ -52,7 +53,7 @@ EXPORT_SYMBOL(rtas_flash_term_hook);
* are designed only for very early low-level debugging, which * are designed only for very early low-level debugging, which
* is why the token is hard-coded to 10. * is why the token is hard-coded to 10.
*/ */
void call_rtas_display_status(unsigned char c) static void call_rtas_display_status(char c)
{ {
struct rtas_args *args = &rtas.args; struct rtas_args *args = &rtas.args;
unsigned long s; unsigned long s;
@@ -65,14 +66,14 @@ void call_rtas_display_status(unsigned char c)
args->nargs = 1; args->nargs = 1;
args->nret = 1; args->nret = 1;
args->rets = (rtas_arg_t *)&(args->args[1]); args->rets = (rtas_arg_t *)&(args->args[1]);
args->args[0] = (int)c; args->args[0] = (unsigned char)c;
enter_rtas(__pa(args)); enter_rtas(__pa(args));
spin_unlock_irqrestore(&rtas.lock, s); spin_unlock_irqrestore(&rtas.lock, s);
} }
void call_rtas_display_status_delay(unsigned char c) static void call_rtas_display_status_delay(char c)
{ {
static int pending_newline = 0; /* did last write end with unprinted newline? */ static int pending_newline = 0; /* did last write end with unprinted newline? */
static int width = 16; static int width = 16;
@@ -96,6 +97,11 @@ void call_rtas_display_status_delay(unsigned char c)
} }
} }
void __init udbg_init_rtas(void)
{
udbg_putc = call_rtas_display_status_delay;
}
void rtas_progress(char *s, unsigned short hex) void rtas_progress(char *s, unsigned short hex)
{ {
struct device_node *root; struct device_node *root;
+28 -32
View File
@@ -33,6 +33,7 @@
#include <linux/unistd.h> #include <linux/unistd.h>
#include <linux/serial.h> #include <linux/serial.h>
#include <linux/serial_8250.h> #include <linux/serial_8250.h>
#include <linux/bootmem.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/kdump.h> #include <asm/kdump.h>
#include <asm/prom.h> #include <asm/prom.h>
@@ -70,33 +71,6 @@
#define DBG(fmt...) #define DBG(fmt...)
#endif #endif
/*
* Here are some early debugging facilities. You can enable one
* but your kernel will not boot on anything else if you do so
*/
/* This one is for use on LPAR machines that support an HVC console
* on vterm 0
*/
extern void udbg_init_debug_lpar(void);
/* This one is for use on Apple G5 machines
*/
extern void udbg_init_pmac_realmode(void);
/* That's RTAS panel debug */
extern void call_rtas_display_status_delay(unsigned char c);
/* Here's maple real mode debug */
extern void udbg_init_maple_realmode(void);
#define EARLY_DEBUG_INIT() do {} while(0)
#if 0
#define EARLY_DEBUG_INIT() udbg_init_debug_lpar()
#define EARLY_DEBUG_INIT() udbg_init_maple_realmode()
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
#define EARLY_DEBUG_INIT() \
do { udbg_putc = call_rtas_display_status_delay; } while(0)
#endif
int have_of = 1; int have_of = 1;
int boot_cpuid = 0; int boot_cpuid = 0;
int boot_cpuid_phys = 0; int boot_cpuid_phys = 0;
@@ -237,11 +211,8 @@ void __init early_setup(unsigned long dt_ptr)
struct paca_struct *lpaca = get_paca(); struct paca_struct *lpaca = get_paca();
static struct machdep_calls **mach; static struct machdep_calls **mach;
/* /* Enable early debugging if any specified (see udbg.h) */
* Enable early debugging if any specified (see top of udbg_early_init();
* this file)
*/
EARLY_DEBUG_INIT();
DBG(" -> early_setup()\n"); DBG(" -> early_setup()\n");
@@ -684,3 +655,28 @@ void cpu_die(void)
if (ppc_md.cpu_die) if (ppc_md.cpu_die)
ppc_md.cpu_die(); ppc_md.cpu_die();
} }
#ifdef CONFIG_SMP
void __init setup_per_cpu_areas(void)
{
int i;
unsigned long size;
char *ptr;
/* Copy section for each CPU (we discard the original) */
size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES);
#ifdef CONFIG_MODULES
if (size < PERCPU_ENOUGH_ROOM)
size = PERCPU_ENOUGH_ROOM;
#endif
for_each_cpu(i) {
ptr = alloc_bootmem_node(NODE_DATA(cpu_to_node(i)), size);
if (!ptr)
panic("Cannot allocate cpu data for CPU %d\n", i);
paca[i].data_offset = ptr - __per_cpu_start;
memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start);
}
}
#endif
+25
View File
@@ -15,11 +15,36 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/console.h> #include <linux/console.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/udbg.h>
void (*udbg_putc)(char c); void (*udbg_putc)(char c);
int (*udbg_getc)(void); int (*udbg_getc)(void);
int (*udbg_getc_poll)(void); int (*udbg_getc_poll)(void);
/*
* Early debugging facilities. You can enable _one_ of these via .config,
* if you do so your kernel _will not boot_ on anything else. Be careful.
*/
void __init udbg_early_init(void)
{
#if defined(CONFIG_PPC_EARLY_DEBUG_LPAR)
/* For LPAR machines that have an HVC console on vterm 0 */
udbg_init_debug_lpar();
#elif defined(CONFIG_PPC_EARLY_DEBUG_G5)
/* For use on Apple G5 machines */
udbg_init_pmac_realmode();
#elif defined(CONFIG_PPC_EARLY_DEBUG_RTAS)
/* RTAS panel debug */
udbg_init_rtas();
#elif defined(CONFIG_PPC_EARLY_DEBUG_MAPLE)
/* Maple real mode debug */
udbg_init_maple_realmode();
#elif defined(CONFIG_PPC_EARLY_DEBUG_ISERIES)
/* For iSeries - hit Ctrl-x Ctrl-x to see the output */
udbg_init_iseries();
#endif
}
/* udbg library, used by xmon et al */ /* udbg library, used by xmon et al */
void udbg_puts(const char *s) void udbg_puts(const char *s)
{ {
+1 -1
View File
@@ -155,7 +155,7 @@ void udbg_maple_real_putc(unsigned char c)
} }
} }
void udbg_init_maple_realmode(void) void __init udbg_init_maple_realmode(void)
{ {
udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8; udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8;
+1
View File
@@ -0,0 +1 @@
vdso32.lds
+1
View File
@@ -0,0 +1 @@
vdso64.lds
+26
View File
@@ -0,0 +1,26 @@
menu "Platform support"
depends on PPC_83xx
choice
prompt "Machine Type"
default MPC834x_SYS
config MPC834x_SYS
bool "Freescale MPC834x SYS"
help
This option enables support for the MPC 834x SYS evaluation board.
Be aware that PCI buses can only function when SYS board is plugged
into the PIB (Platform IO Board) board from Freescale which provide
3 PCI slots. The PIBs PCI initialization is the bootloader's
responsiblilty.
endchoice
config MPC834x
bool
select PPC_UDBG_16550
select PPC_INDIRECT_PCI
default y if MPC834x_SYS
endmenu
+4
View File
@@ -0,0 +1,4 @@
#
# Makefile for the PowerPC 83xx linux kernel.
#
obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o pci.o
+1
View File
@@ -7,6 +7,7 @@ endif
endif endif
obj-$(CONFIG_PPC_CHRP) += chrp/ obj-$(CONFIG_PPC_CHRP) += chrp/
obj-$(CONFIG_4xx) += 4xx/ obj-$(CONFIG_4xx) += 4xx/
obj-$(CONFIG_PPC_83xx) += 83xx/
obj-$(CONFIG_85xx) += 85xx/ obj-$(CONFIG_85xx) += 85xx/
obj-$(CONFIG_PPC_PSERIES) += pseries/ obj-$(CONFIG_PPC_PSERIES) += pseries/
obj-$(CONFIG_PPC_ISERIES) += iseries/ obj-$(CONFIG_PPC_ISERIES) += iseries/
+28 -4
View File
@@ -169,11 +169,33 @@ static inline void save_mfc_cntl(struct spu_state *csa, struct spu *spu)
struct spu_priv2 __iomem *priv2 = spu->priv2; struct spu_priv2 __iomem *priv2 = spu->priv2;
/* Save, Step 8: /* Save, Step 8:
* Read and save MFC_CNTL[Ss]. * Suspend DMA and save MFC_CNTL.
*/ */
if (csa) { switch (in_be64(&priv2->mfc_control_RW) &
csa->priv2.mfc_control_RW = in_be64(&priv2->mfc_control_RW) & MFC_CNTL_SUSPEND_DMA_STATUS_MASK) {
MFC_CNTL_SUSPEND_DMA_STATUS_MASK; case MFC_CNTL_SUSPEND_IN_PROGRESS:
POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) &
MFC_CNTL_SUSPEND_DMA_STATUS_MASK) ==
MFC_CNTL_SUSPEND_COMPLETE);
/* fall through */
case MFC_CNTL_SUSPEND_COMPLETE:
if (csa) {
csa->priv2.mfc_control_RW =
in_be64(&priv2->mfc_control_RW) |
MFC_CNTL_SUSPEND_DMA_QUEUE;
}
break;
case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION:
out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE);
POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) &
MFC_CNTL_SUSPEND_DMA_STATUS_MASK) ==
MFC_CNTL_SUSPEND_COMPLETE);
if (csa) {
csa->priv2.mfc_control_RW =
in_be64(&priv2->mfc_control_RW) &
~MFC_CNTL_SUSPEND_DMA_QUEUE;
}
break;
} }
} }
@@ -237,6 +259,8 @@ static inline void save_mfc_decr(struct spu_state *csa, struct spu *spu)
eieio(); eieio();
csa->spu_chnldata_RW[7] = in_be64(&priv2->spu_chnldata_RW); csa->spu_chnldata_RW[7] = in_be64(&priv2->spu_chnldata_RW);
eieio(); eieio();
} else {
csa->priv2.mfc_control_RW &= ~MFC_CNTL_DECREMENTER_RUNNING;
} }
} }

Some files were not shown because too many files have changed in this diff Show More