diff options
author | Helge Deller <deller@gmx.de> | 2024-01-17 17:50:13 +0100 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2024-01-22 22:57:32 +0100 |
commit | e39204ffb4e613355880418dba999a6a5d24e1f7 (patch) | |
tree | c1abdb988564943312bed30c82250a293b270630 | |
parent | 141184553a6472160460cbb9bf57d6549433e67d (diff) | |
download | parisc-linux-testcases.tar.gz |
parisc: Runtime unalignment testcasetestcases
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r-- | arch/parisc/kernel/smp.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 444154271f237..963205020ae46 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c @@ -330,10 +330,11 @@ void smp_callin(unsigned long pdce_proc) /* * Bring one cpu online. */ -static int smp_boot_one_cpu(int cpuid, struct task_struct *idle) +static int noinline smp_boot_one_cpu(int cpuid, struct task_struct *idle) { const struct cpuinfo_parisc *p = &per_cpu(cpu_data, cpuid); long timeout; + long t2[2]; #ifdef CONFIG_HOTPLUG_CPU int i; @@ -364,7 +365,18 @@ static int smp_boot_one_cpu(int cpuid, struct task_struct *idle) smp_init_current_idle_task = idle ; mb(); - printk(KERN_INFO "Releasing cpu %d now, hpa=%lx\n", cpuid, p->hpa); + printk(KERN_INFO "Releasing cpu %d now, hpa=%lx vector %x\n", cpuid, p->hpa, PAGE0->vec_rendz); + t2[0] = (unsigned long) 0xaabbccdd11223344; + t2[1] = (unsigned long) 0x0a0b0c0d01020304; + asm("nop ! nop ! nop" : : : "memory"); + asm volatile("ldw 1(%1),%0" : "=r" (i) : "r"(&t2) : "memory"); + printk("VAL1 %04x\n", i); + asm volatile("ldw 2(%1),%0" : "=r" (i) : "r"(&t2) : "memory"); + printk("VAL2 %04x\n", i); + asm volatile("ldw 3(%1),%0" : "=r" (i) : "r"(&t2) : "memory"); + printk("VAL3 %04x\n", i); + asm volatile("ldw 4(%1),%0" : "=r" (i) : "r"(&t2) : "memory"); + printk("VAL4 %04x\n", i); /* ** This gets PDC to release the CPU from a very tight loop. |