[PATCH] powerpc: RTC memory corruption
[powerpc.git] / arch / powerpc / xmon / xmon.c
index ef4356b..7d02fa2 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/cpumask.h>
 #include <linux/module.h>
 #include <linux/sysrq.h>
+#include <linux/interrupt.h>
 
 #include <asm/ptrace.h>
 #include <asm/string.h>
@@ -310,7 +311,7 @@ static void release_output_lock(void)
 }
 #endif
 
-int xmon_core(struct pt_regs *regs, int fromipi)
+static int xmon_core(struct pt_regs *regs, int fromipi)
 {
        int cmd = 0;
        unsigned long msr;
@@ -449,7 +450,6 @@ int xmon_core(struct pt_regs *regs, int fromipi)
  leave:
        cpu_clear(cpu, cpus_in_xmon);
        xmon_fault_jmp[cpu] = NULL;
-
 #else
        /* UP is simple... */
        if (in_xmon) {
@@ -528,7 +528,7 @@ xmon_irq(int irq, void *d, struct pt_regs *regs)
        return IRQ_HANDLED;
 }
 
-int xmon_bpt(struct pt_regs *regs)
+static int xmon_bpt(struct pt_regs *regs)
 {
        struct bpt *bp;
        unsigned long offset;
@@ -554,7 +554,7 @@ int xmon_bpt(struct pt_regs *regs)
        return 1;
 }
 
-int xmon_sstep(struct pt_regs *regs)
+static int xmon_sstep(struct pt_regs *regs)
 {
        if (user_mode(regs))
                return 0;
@@ -562,7 +562,7 @@ int xmon_sstep(struct pt_regs *regs)
        return 1;
 }
 
-int xmon_dabr_match(struct pt_regs *regs)
+static int xmon_dabr_match(struct pt_regs *regs)
 {
        if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) != (MSR_IR|MSR_SF))
                return 0;
@@ -572,7 +572,7 @@ int xmon_dabr_match(struct pt_regs *regs)
        return 1;
 }
 
-int xmon_iabr_match(struct pt_regs *regs)
+static int xmon_iabr_match(struct pt_regs *regs)
 {
        if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) != (MSR_IR|MSR_SF))
                return 0;
@@ -582,7 +582,7 @@ int xmon_iabr_match(struct pt_regs *regs)
        return 1;
 }
 
-int xmon_ipi(struct pt_regs *regs)
+static int xmon_ipi(struct pt_regs *regs)
 {
 #ifdef CONFIG_SMP
        if (in_xmon && !cpu_isset(smp_processor_id(), cpus_in_xmon))
@@ -591,7 +591,7 @@ int xmon_ipi(struct pt_regs *regs)
        return 0;
 }
 
-int xmon_fault_handler(struct pt_regs *regs)
+static int xmon_fault_handler(struct pt_regs *regs)
 {
        struct bpt *bp;
        unsigned long offset;
@@ -804,7 +804,10 @@ cmds(struct pt_regs *excp)
                        break;
                case 'x':
                case 'X':
+                       return cmd;
                case EOF:
+                       printf(" <no input ...>\n");
+                       mdelay(2000);
                        return cmd;
                case '?':
                        printf(help_string);
@@ -1010,7 +1013,7 @@ static long check_bp_loc(unsigned long addr)
        unsigned int instr;
 
        addr &= ~3;
-       if (addr < KERNELBASE) {
+       if (!is_kernel_addr(addr)) {
                printf("Breakpoints may only be placed at kernel addresses\n");
                return 0;
        }
@@ -1061,7 +1064,7 @@ bpt_cmds(void)
                dabr.address = 0;
                dabr.enabled = 0;
                if (scanhex(&dabr.address)) {
-                       if (dabr.address < KERNELBASE) {
+                       if (!is_kernel_addr(dabr.address)) {
                                printf(badaddr);
                                break;
                        }