Commit 8ba1f279 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc

* 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc:
  [POWERPC] Fix bugs in the hypervisor call stats code
  [POWERPC] Fix corruption in hcall9
  [POWERPC] iSeries: fix setup initcall
  [POWERPC] iSeries: fix viopath initialisation
  [POWERPC] iSeries: fix lpevents initialisation
  [POWERPC] iSeries: fix proc/iSeries initialisation
  [POWERPC] iSeries: fix mf proc initialisation
  [POWERPC] disable PReP and EFIKA during make oldconfig
  [POWERPC] Fix mpc52xx serial driver to work for arch/ppc again
  [POWERPC] Don't include powerpc/sysdev/rom.o for arch/ppc builds
  [POWERPC] Fix mpc52xx fdt to use correct device_type for sound devices
  [POWERPC] 52xx: Don't use device_initcall to probe of_platform_bus
  [POWERPC] Add legacy iSeries to ppc64_defconfig
  [POWERPC] Update ppc64_defconfig
  [POWERPC] Fix manual assembly WARN_ON() in enter_rtas().
  [POWERPC] Avoid calling get_irq_server() with a real, not virtual irq.
  [POWERPC] Fix unbalanced uses of of_node_put
  [POWERPC] Fix bogus BUG_ON() in in hugetlb_get_unmapped_area()
parents 599c8531 dc40127c
...@@ -157,8 +157,8 @@ rtc@<addr> rtc *-rtc Real time clock ...@@ -157,8 +157,8 @@ rtc@<addr> rtc *-rtc Real time clock
mscan@<addr> mscan *-mscan CAN bus controller mscan@<addr> mscan *-mscan CAN bus controller
pci@<addr> pci *-pci PCI bridge pci@<addr> pci *-pci PCI bridge
serial@<addr> serial *-psc-uart PSC in serial mode serial@<addr> serial *-psc-uart PSC in serial mode
i2s@<addr> i2s *-psc-i2s PSC in i2s mode i2s@<addr> sound *-psc-i2s PSC in i2s mode
ac97@<addr> ac97 *-psc-ac97 PSC in ac97 mode ac97@<addr> sound *-psc-ac97 PSC in ac97 mode
spi@<addr> spi *-psc-spi PSC in spi mode spi@<addr> spi *-psc-spi PSC in spi mode
irda@<addr> irda *-psc-irda PSC in IrDA mode irda@<addr> irda *-psc-irda PSC in IrDA mode
spi@<addr> spi *-spi MPC52xx spi device spi@<addr> spi *-spi MPC52xx spi device
......
...@@ -436,7 +436,7 @@ config PPC_EFIKA ...@@ -436,7 +436,7 @@ config PPC_EFIKA
select RTAS_PROC select RTAS_PROC
select PPC_MPC52xx select PPC_MPC52xx
select PPC_NATIVE select PPC_NATIVE
default y default n
config PPC_LITE5200 config PPC_LITE5200
bool "Freescale Lite5200 Eval Board" bool "Freescale Lite5200 Eval Board"
...@@ -471,7 +471,7 @@ config PPC_PREP ...@@ -471,7 +471,7 @@ config PPC_PREP
select PPC_INDIRECT_PCI select PPC_INDIRECT_PCI
select PPC_UDBG_16550 select PPC_UDBG_16550
select PPC_NATIVE select PPC_NATIVE
default y default n
config PPC_MAPLE config PPC_MAPLE
depends on PPC_MULTIPLATFORM && PPC64 depends on PPC_MULTIPLATFORM && PPC64
......
...@@ -238,7 +238,7 @@ ...@@ -238,7 +238,7 @@
// PSC3 in CODEC mode example // PSC3 in CODEC mode example
i2s@2400 { // PSC3 i2s@2400 { // PSC3
device_type = "i2s"; device_type = "sound";
compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s"; compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s";
reg = <2400 100>; reg = <2400 100>;
interrupts = <2 3 0>; interrupts = <2 3 0>;
...@@ -265,7 +265,7 @@ ...@@ -265,7 +265,7 @@
// PSC6 in AC97 mode example // PSC6 in AC97 mode example
ac97@2c00 { // PSC6 ac97@2c00 { // PSC6
device_type = "ac97"; device_type = "sound";
compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97"; compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97";
reg = <2c00 100>; reg = <2c00 100>;
interrupts = <2 4 0>; interrupts = <2 4 0>;
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
// PSC3 in CODEC mode example // PSC3 in CODEC mode example
i2s@2400 { // PSC3 i2s@2400 { // PSC3
device_type = "i2s"; device_type = "sound";
compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s"; compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s";
reg = <2400 100>; reg = <2400 100>;
interrupts = <2 3 0>; interrupts = <2 3 0>;
...@@ -270,7 +270,7 @@ ...@@ -270,7 +270,7 @@
// PSC6 in AC97 mode example // PSC6 in AC97 mode example
ac97@2c00 { // PSC6 ac97@2c00 { // PSC6
device_type = "ac97"; device_type = "sound";
compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97"; compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97";
reg = <2c00 100>; reg = <2c00 100>;
interrupts = <2 4 0>; interrupts = <2 4 0>;
......
This diff is collapsed.
...@@ -303,5 +303,8 @@ int main(void) ...@@ -303,5 +303,8 @@ int main(void)
DEFINE(NSEC_PER_SEC, NSEC_PER_SEC); DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
DEFINE(CLOCK_REALTIME_RES, TICK_NSEC); DEFINE(CLOCK_REALTIME_RES, TICK_NSEC);
#ifdef CONFIG_BUG
DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
#endif
return 0; return 0;
} }
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/cputable.h> #include <asm/cputable.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/bug.h>
/* /*
* System calls. * System calls.
...@@ -634,18 +635,14 @@ _GLOBAL(enter_rtas) ...@@ -634,18 +635,14 @@ _GLOBAL(enter_rtas)
li r0,0 li r0,0
mtcr r0 mtcr r0
#ifdef CONFIG_BUG
/* There is no way it is acceptable to get here with interrupts enabled, /* There is no way it is acceptable to get here with interrupts enabled,
* check it with the asm equivalent of WARN_ON * check it with the asm equivalent of WARN_ON
*/ */
lbz r0,PACASOFTIRQEN(r13) lbz r0,PACASOFTIRQEN(r13)
1: tdnei r0,0 1: tdnei r0,0
.section __bug_table,"a" EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
.llong 1b,__LINE__ + 0x1000000, 1f, 2f #endif
.previous
.section .rodata,"a"
1: .asciz __FILE__
2: .asciz "enter_rtas"
.previous
/* Hard-disable interrupts */ /* Hard-disable interrupts */
mfmsr r6 mfmsr r6
......
...@@ -744,7 +744,8 @@ static int htlb_check_hinted_area(unsigned long addr, unsigned long len) ...@@ -744,7 +744,8 @@ static int htlb_check_hinted_area(unsigned long addr, unsigned long len)
struct vm_area_struct *vma; struct vm_area_struct *vma;
vma = find_vma(current->mm, addr); vma = find_vma(current->mm, addr);
if (!vma || ((addr + len) <= vma->vm_start)) if (TASK_SIZE - len >= addr &&
(!vma || ((addr + len) <= vma->vm_start)))
return 0; return 0;
return -ENOMEM; return -ENOMEM;
...@@ -815,6 +816,8 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, ...@@ -815,6 +816,8 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
return -EINVAL; return -EINVAL;
if (len & ~HPAGE_MASK) if (len & ~HPAGE_MASK)
return -EINVAL; return -EINVAL;
if (len > TASK_SIZE)
return -ENOMEM;
if (!cpu_has_feature(CPU_FTR_16M_PAGE)) if (!cpu_has_feature(CPU_FTR_16M_PAGE))
return -EINVAL; return -EINVAL;
...@@ -823,9 +826,6 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, ...@@ -823,9 +826,6 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
BUG_ON((addr + len) < addr); BUG_ON((addr + len) < addr);
if (test_thread_flag(TIF_32BIT)) { if (test_thread_flag(TIF_32BIT)) {
/* Paranoia, caller should have dealt with this */
BUG_ON((addr + len) > 0x100000000UL);
curareas = current->mm->context.low_htlb_areas; curareas = current->mm->context.low_htlb_areas;
/* First see if we can use the hint address */ /* First see if we can use the hint address */
......
...@@ -153,6 +153,7 @@ define_machine(lite52xx) { ...@@ -153,6 +153,7 @@ define_machine(lite52xx) {
.name = "lite52xx", .name = "lite52xx",
.probe = lite52xx_probe, .probe = lite52xx_probe,
.setup_arch = lite52xx_setup_arch, .setup_arch = lite52xx_setup_arch,
.init = mpc52xx_declare_of_platform_devices,
.init_IRQ = mpc52xx_init_irq, .init_IRQ = mpc52xx_init_irq,
.get_irq = mpc52xx_get_irq, .get_irq = mpc52xx_get_irq,
.show_cpuinfo = lite52xx_show_cpuinfo, .show_cpuinfo = lite52xx_show_cpuinfo,
......
...@@ -116,11 +116,12 @@ unmap_regs: ...@@ -116,11 +116,12 @@ unmap_regs:
if (xlb) iounmap(xlb); if (xlb) iounmap(xlb);
} }
static int __init void __init
mpc52xx_declare_of_platform_devices(void) mpc52xx_declare_of_platform_devices(void)
{ {
/* Find every child of the SOC node and add it to of_platform */ /* Find every child of the SOC node and add it to of_platform */
return of_platform_bus_probe(NULL, NULL, NULL); if (of_platform_bus_probe(NULL, NULL, NULL))
printk(KERN_ERR __FILE__ ": "
"Error while probing of_platform bus\n");
} }
device_initcall(mpc52xx_declare_of_platform_devices);
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/paca.h> #include <asm/paca.h>
#include <asm/firmware.h>
#include <asm/iseries/it_lp_queue.h> #include <asm/iseries/it_lp_queue.h>
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/hv_call_event.h> #include <asm/iseries/hv_call_event.h>
...@@ -318,6 +319,9 @@ static int __init proc_lpevents_init(void) ...@@ -318,6 +319,9 @@ static int __init proc_lpevents_init(void)
{ {
struct proc_dir_entry *e; struct proc_dir_entry *e;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return 0;
e = create_proc_entry("iSeries/lpevents", S_IFREG|S_IRUGO, NULL); e = create_proc_entry("iSeries/lpevents", S_IFREG|S_IRUGO, NULL);
if (e) if (e)
e->proc_fops = &proc_lpevents_operations; e->proc_fops = &proc_lpevents_operations;
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/paca.h> #include <asm/paca.h>
#include <asm/abs_addr.h> #include <asm/abs_addr.h>
#include <asm/firmware.h>
#include <asm/iseries/vio.h> #include <asm/iseries/vio.h>
#include <asm/iseries/mf.h> #include <asm/iseries/mf.h>
#include <asm/iseries/hv_lp_config.h> #include <asm/iseries/hv_lp_config.h>
...@@ -1235,6 +1236,9 @@ static int __init mf_proc_init(void) ...@@ -1235,6 +1236,9 @@ static int __init mf_proc_init(void)
char name[2]; char name[2];
int i; int i;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return 0;
mf_proc_root = proc_mkdir("iSeries/mf", NULL); mf_proc_root = proc_mkdir("iSeries/mf", NULL);
if (!mf_proc_root) if (!mf_proc_root)
return 1; return 1;
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/time.h> #include <asm/time.h>
#include <asm/lppaca.h> #include <asm/lppaca.h>
#include <asm/firmware.h>
#include <asm/iseries/hv_call_xm.h> #include <asm/iseries/hv_call_xm.h>
#include "processor_vpd.h" #include "processor_vpd.h"
...@@ -31,7 +32,12 @@ ...@@ -31,7 +32,12 @@
static int __init iseries_proc_create(void) static int __init iseries_proc_create(void)
{ {
struct proc_dir_entry *e = proc_mkdir("iSeries", 0); struct proc_dir_entry *e;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return 0;
e = proc_mkdir("iSeries", 0);
if (!e) if (!e)
return 1; return 1;
...@@ -106,6 +112,9 @@ static int __init iseries_proc_init(void) ...@@ -106,6 +112,9 @@ static int __init iseries_proc_init(void)
{ {
struct proc_dir_entry *e; struct proc_dir_entry *e;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return 0;
e = create_proc_entry("iSeries/titanTod", S_IFREG|S_IRUGO, NULL); e = create_proc_entry("iSeries/titanTod", S_IFREG|S_IRUGO, NULL);
if (e) if (e)
e->proc_fops = &proc_titantod_operations; e->proc_fops = &proc_titantod_operations;
......
...@@ -527,6 +527,7 @@ static void __init iSeries_fixup_klimit(void) ...@@ -527,6 +527,7 @@ static void __init iSeries_fixup_klimit(void)
static int __init iSeries_src_init(void) static int __init iSeries_src_init(void)
{ {
/* clear the progress line */ /* clear the progress line */
if (firmware_has_feature(FW_FEATURE_ISERIES))
ppc_md.progress(" ", 0xffff); ppc_md.progress(" ", 0xffff);
return 0; return 0;
} }
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <asm/system.h> #include <asm/system.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/firmware.h>
#include <asm/iseries/hv_types.h> #include <asm/iseries/hv_types.h>
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/hv_lp_config.h> #include <asm/iseries/hv_lp_config.h>
...@@ -183,6 +184,9 @@ static int __init vio_proc_init(void) ...@@ -183,6 +184,9 @@ static int __init vio_proc_init(void)
{ {
struct proc_dir_entry *e; struct proc_dir_entry *e;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return 0;
e = create_proc_entry("iSeries/config", 0, NULL); e = create_proc_entry("iSeries/config", 0, NULL);
if (e) if (e)
e->proc_fops = &proc_viopath_operations; e->proc_fops = &proc_viopath_operations;
......
...@@ -254,7 +254,6 @@ static void __init maple_init_IRQ(void) ...@@ -254,7 +254,6 @@ static void __init maple_init_IRQ(void)
printk(KERN_DEBUG "OpenPIC addr: %lx, has ISUs: %d\n", printk(KERN_DEBUG "OpenPIC addr: %lx, has ISUs: %d\n",
openpic_addr, has_isus); openpic_addr, has_isus);
} }
of_node_put(root);
BUG_ON(openpic_addr == 0); BUG_ON(openpic_addr == 0);
......
...@@ -129,7 +129,6 @@ static __init void pas_init_IRQ(void) ...@@ -129,7 +129,6 @@ static __init void pas_init_IRQ(void)
} }
openpic_addr = of_read_number(opprop, naddr); openpic_addr = of_read_number(opprop, naddr);
printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
of_node_put(root);
mpic = mpic_alloc(mpic_node, openpic_addr, MPIC_PRIMARY, 0, 0, mpic = mpic_alloc(mpic_node, openpic_addr, MPIC_PRIMARY, 0, 0,
" PAS-OPIC "); " PAS-OPIC ");
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
BEGIN_FTR_SECTION; \ BEGIN_FTR_SECTION; \
mfspr r0,SPRN_PURR; /* get PURR and */ \ mfspr r0,SPRN_PURR; /* get PURR and */ \
std r0,STK_PARM(r6)(r1); /* save for later */ \ std r0,STK_PARM(r6)(r1); /* save for later */ \
END_FTR_SECTION_IFCLR(CPU_FTR_PURR); END_FTR_SECTION_IFSET(CPU_FTR_PURR);
/* /*
* postcall is performed immediately before function return which * postcall is performed immediately before function return which
...@@ -43,7 +43,7 @@ BEGIN_FTR_SECTION; \ ...@@ -43,7 +43,7 @@ BEGIN_FTR_SECTION; \
mfspr r8,SPRN_PURR; /* PURR after */ \ mfspr r8,SPRN_PURR; /* PURR after */ \
ld r6,STK_PARM(r6)(r1); /* PURR before */ \ ld r6,STK_PARM(r6)(r1); /* PURR before */ \
subf r6,r6,r8; /* delta */ \ subf r6,r6,r8; /* delta */ \
END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ END_FTR_SECTION_IFSET(CPU_FTR_PURR); \
ld r5,STK_PARM(r5)(r1); /* timebase before */ \ ld r5,STK_PARM(r5)(r1); /* timebase before */ \
subf r5,r5,r7; /* time delta */ \ subf r5,r5,r7; /* time delta */ \
\ \
...@@ -66,7 +66,7 @@ BEGIN_FTR_SECTION; \ ...@@ -66,7 +66,7 @@ BEGIN_FTR_SECTION; \
ld r7,HCALL_STAT_PURR(r4); /* PURR */ \ ld r7,HCALL_STAT_PURR(r4); /* PURR */ \
add r7,r7,r6; \ add r7,r7,r6; \
std r7,HCALL_STAT_PURR(r4); \ std r7,HCALL_STAT_PURR(r4); \
END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ END_FTR_SECTION_IFSET(CPU_FTR_PURR); \
1: 1:
#else #else
#define HCALL_INST_PRECALL #define HCALL_INST_PRECALL
...@@ -145,6 +145,7 @@ _GLOBAL(plpar_hcall9) ...@@ -145,6 +145,7 @@ _GLOBAL(plpar_hcall9)
HVSC /* invoke the hypervisor */ HVSC /* invoke the hypervisor */
mr r0,r12
ld r12,STK_PARM(r4)(r1) ld r12,STK_PARM(r4)(r1)
std r4, 0(r12) std r4, 0(r12)
std r5, 8(r12) std r5, 8(r12)
...@@ -154,7 +155,7 @@ _GLOBAL(plpar_hcall9) ...@@ -154,7 +155,7 @@ _GLOBAL(plpar_hcall9)
std r9, 40(r12) std r9, 40(r12)
std r10,48(r12) std r10,48(r12)
std r11,56(r12) std r11,56(r12)
std r12,64(r12) std r0, 64(r12)
HCALL_INST_POSTCALL HCALL_INST_POSTCALL
......
...@@ -34,7 +34,7 @@ DEFINE_PER_CPU(struct hcall_stats[HCALL_STAT_ARRAY_SIZE], hcall_stats); ...@@ -34,7 +34,7 @@ DEFINE_PER_CPU(struct hcall_stats[HCALL_STAT_ARRAY_SIZE], hcall_stats);
*/ */
static void *hc_start(struct seq_file *m, loff_t *pos) static void *hc_start(struct seq_file *m, loff_t *pos)
{ {
if ((int)*pos < HCALL_STAT_ARRAY_SIZE) if ((int)*pos < (HCALL_STAT_ARRAY_SIZE-1))
return (void *)(unsigned long)(*pos + 1); return (void *)(unsigned long)(*pos + 1);
return NULL; return NULL;
...@@ -57,7 +57,7 @@ static int hc_show(struct seq_file *m, void *p) ...@@ -57,7 +57,7 @@ static int hc_show(struct seq_file *m, void *p)
struct hcall_stats *hs = (struct hcall_stats *)m->private; struct hcall_stats *hs = (struct hcall_stats *)m->private;
if (hs[h_num].num_calls) { if (hs[h_num].num_calls) {
if (!cpu_has_feature(CPU_FTR_PURR)) if (cpu_has_feature(CPU_FTR_PURR))
seq_printf(m, "%lu %lu %lu %lu\n", h_num<<2, seq_printf(m, "%lu %lu %lu %lu\n", h_num<<2,
hs[h_num].num_calls, hs[h_num].num_calls,
hs[h_num].tb_total, hs[h_num].tb_total,
......
...@@ -224,7 +224,6 @@ static void xics_unmask_irq(unsigned int virq) ...@@ -224,7 +224,6 @@ static void xics_unmask_irq(unsigned int virq)
static void xics_mask_real_irq(unsigned int irq) static void xics_mask_real_irq(unsigned int irq)
{ {
int call_status; int call_status;
unsigned int server;
if (irq == XICS_IPI) if (irq == XICS_IPI)
return; return;
...@@ -236,9 +235,9 @@ static void xics_mask_real_irq(unsigned int irq) ...@@ -236,9 +235,9 @@ static void xics_mask_real_irq(unsigned int irq)
return; return;
} }
server = get_irq_server(irq);
/* Have to set XIVE to 0xff to be able to remove a slot */ /* Have to set XIVE to 0xff to be able to remove a slot */
call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, 0xff); call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq,
default_server, 0xff);
if (call_status != 0) { if (call_status != 0) {
printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)" printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)"
" returned %d\n", irq, call_status); " returned %d\n", irq, call_status);
......
...@@ -12,7 +12,6 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o ...@@ -12,7 +12,6 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
obj-$(CONFIG_FSL_SOC) += fsl_soc.o obj-$(CONFIG_FSL_SOC) += fsl_soc.o
obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
obj-$(CONFIG_MTD) += rom.o
ifeq ($(CONFIG_PPC_MERGE),y) ifeq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_PPC_I8259) += i8259.o obj-$(CONFIG_PPC_I8259) += i8259.o
...@@ -21,5 +20,6 @@ endif ...@@ -21,5 +20,6 @@ endif
# Temporary hack until we have migrated to asm-powerpc # Temporary hack until we have migrated to asm-powerpc
ifeq ($(ARCH),powerpc) ifeq ($(ARCH),powerpc)
obj-$(CONFIG_MTD) += rom.o
obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o
endif endif
...@@ -789,7 +789,9 @@ static struct console mpc52xx_console = { ...@@ -789,7 +789,9 @@ static struct console mpc52xx_console = {
static int __init static int __init
mpc52xx_console_init(void) mpc52xx_console_init(void)
{ {
#if defined(CONFIG_PPC_MERGE)
mpc52xx_uart_of_enumerate(); mpc52xx_uart_of_enumerate();
#endif
register_console(&mpc52xx_console); register_console(&mpc52xx_console);
return 0; return 0;
} }
......
...@@ -11,10 +11,31 @@ ...@@ -11,10 +11,31 @@
#define BUG_OPCODE .long 0x00b00b00 /* For asm */ #define BUG_OPCODE .long 0x00b00b00 /* For asm */
#define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */ #define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */
#ifndef __ASSEMBLY__
#ifdef CONFIG_BUG #ifdef CONFIG_BUG
#ifdef __ASSEMBLY__
#ifdef CONFIG_DEBUG_BUGVERBOSE
.macro EMIT_BUG_ENTRY addr,file,line,flags
.section __bug_table,"a"
5001: PPC_LONG \addr, 5002f
.short \line, \flags
.org 5001b+BUG_ENTRY_SIZE
.previous
.section .rodata,"a"
5002: .asciz "\file"
.previous
.endm
#else
.macro EMIT_BUG_ENTRY addr,file,line,flags
.section __bug_table,"a"
5001: PPC_LONG \addr
.short \flags
.org 5001b+BUG_ENTRY_SIZE
.previous
.endm
#endif /* verbose */
#else /* !__ASSEMBLY__ */
/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and /* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and
sizeof(struct bug_entry), respectively */ sizeof(struct bug_entry), respectively */
#ifdef CONFIG_DEBUG_BUGVERBOSE #ifdef CONFIG_DEBUG_BUGVERBOSE
...@@ -91,8 +112,8 @@ ...@@ -91,8 +112,8 @@
#define HAVE_ARCH_BUG #define HAVE_ARCH_BUG
#define HAVE_ARCH_BUG_ON #define HAVE_ARCH_BUG_ON
#define HAVE_ARCH_WARN_ON #define HAVE_ARCH_WARN_ON
#endif /* CONFIG_BUG */
#endif /* __ASSEMBLY __ */ #endif /* __ASSEMBLY __ */
#endif /* CONFIG_BUG */
#include <asm-generic/bug.h> #include <asm-generic/bug.h>
......
...@@ -252,8 +252,6 @@ struct hcall_stats { ...@@ -252,8 +252,6 @@ struct hcall_stats {
unsigned long tb_total; /* total wall time (mftb) of calls. */ unsigned long tb_total; /* total wall time (mftb) of calls. */
unsigned long purr_total; /* total cpu time (PURR) of calls. */ unsigned long purr_total; /* total cpu time (PURR) of calls. */
}; };
void update_hcall_stats(unsigned long opcode, unsigned long tb_delta,
unsigned long purr_delta);
#define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1) #define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1)
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
...@@ -244,6 +244,7 @@ struct mpc52xx_cdm { ...@@ -244,6 +244,7 @@ struct mpc52xx_cdm {
extern void __iomem * mpc52xx_find_and_map(const char *); extern void __iomem * mpc52xx_find_and_map(const char *);
extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node); extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
extern void mpc52xx_setup_cpu(void); extern void mpc52xx_setup_cpu(void);
extern void mpc52xx_declare_of_platform_devices(void);
extern void mpc52xx_init_irq(void); extern void mpc52xx_init_irq(void);
extern unsigned int mpc52xx_get_irq(void); extern unsigned int mpc52xx_get_irq(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment