summaryrefslogtreecommitdiffstats
path: root/arch/ia64/kdb/kdbsupport.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kdb/kdbsupport.c')
-rw-r--r--arch/ia64/kdb/kdbsupport.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/arch/ia64/kdb/kdbsupport.c b/arch/ia64/kdb/kdbsupport.c
index 0b574ae6e..d074a01a3 100644
--- a/arch/ia64/kdb/kdbsupport.c
+++ b/arch/ia64/kdb/kdbsupport.c
@@ -28,9 +28,10 @@
#include <linux/stddef.h>
#include <linux/vmalloc.h>
-#include <asm/uaccess.h>
+#include <asm/delay.h>
#include <asm/kdbsupport.h>
#include <asm/rse.h>
+#include <asm/uaccess.h>
extern kdb_state_t kdb_state ;
k_machreg_t dbregs[KDB_DBREGS];
@@ -45,6 +46,21 @@ kdb_setup (char *str)
__setup("kdb", kdb_setup);
static int
+kdb_ia64_itm (int argc, const char **argv, const char **envp, struct pt_regs *regs)
+{
+ int diag;
+ unsigned long val;
+
+ diag = kdbgetularg(argv[1], &val);
+ if (diag)
+ return diag;
+ kdb_printf("new itm=%0xlx\n", val);
+
+ ia64_set_itm(val);
+ return 0;
+}
+
+static int
kdb_ia64_sir (int argc, const char **argv, const char **envp, struct pt_regs *regs)
{
u64 lid, tpr, lrr0, lrr1, itv, pmv, cmcv;
@@ -53,15 +69,17 @@ kdb_ia64_sir (int argc, const char **argv, const char **envp, struct pt_regs *re
asm ("mov %0=cr.tpr" : "=r"(tpr));
asm ("mov %0=cr.lrr0" : "=r"(lrr0));
asm ("mov %0=cr.lrr1" : "=r"(lrr1));
- printk ("lid=0x%lx, tpr=0x%lx, lrr0=0x%lx, llr1=0x%lx\n", lid, tpr, lrr0, lrr1);
+ printk("lid=0x%lx, tpr=0x%lx, lrr0=0x%lx, llr1=0x%lx\n", lid, tpr, lrr0, lrr1);
asm ("mov %0=cr.itv" : "=r"(itv));
asm ("mov %0=cr.pmv" : "=r"(pmv));
asm ("mov %0=cr.cmcv" : "=r"(cmcv));
- printk ("itv=0x%lx, pmv=0x%lx, cmcv=0x%lx\n", itv, pmv, cmcv);
+ printk("itv=0x%lx, pmv=0x%lx, cmcv=0x%lx\n", itv, pmv, cmcv);
- printk ("irr=0x%016lx,0x%016lx,0x%016lx,0x%016lx\n",
+ printk("irr=0x%016lx,0x%016lx,0x%016lx,0x%016lx\n",
ia64_get_irr0(), ia64_get_irr1(), ia64_get_irr2(), ia64_get_irr3());
+
+ printk("itc=0x%016lx, itm=0x%016lx\n", ia64_get_itc(), ia64_get_itm());
return 0;
}
@@ -90,6 +108,7 @@ kdb_init (void)
kdb_state.bkpt_handling_state = BKPTSTATE_NOT_HANDLED ;
kdb_register("irr", kdb_ia64_sir, "", "Show interrupt registers", 0);
+ kdb_register("itm", kdb_ia64_itm, "", "Set new ITM value", 0);
}
/*