android_kernel_xiaomi_sm8350/arch/ia64/kernel
Keith Owens b833961bd3 [IA64] unwind.c uses wrong unat from switch_stack
unwind.c can read the wrong unat bits from switch_stack.
sw->caller_unat is the value of ar.unat when the task was blocked.
sw->ar_unat is the value of ar.unat after doing st8.spill for r4-7.
IOW, ar_unat is caller_unat with 4 bits changed.

unw_access_gr() uses sw->ar_unat for r4-7 (correct), but it also uses
sw->ar_unat for other scratch registers (incorrect).  sw->ar_unat
should only be used for r4-7, everything else should use
sw->caller_unat, unless modified by unwind info.  Using sw->ar_unat
risks picking up the 4 bits that were overwritten when r4-7 were saved.

Also this line is wrong
	unw.sw_off[unw.preg_index[UNW_REG_PFS]] = SW(AR_UNAT);
and should be
	unw.sw_off[unw.preg_index[UNW_REG_PFS]] = SW(AR_PFS);

Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2005-07-27 14:18:08 -07:00
..
acpi-ext.c
acpi.c [ACPI] merge acpi-2.6.12 branch into latest Linux 2.6.13-rc... 2005-07-12 17:21:56 -04:00
asm-offsets.c
brl_emu.c
cyclone.c
domain.c [PATCH] Dynamic sched domains: ia64 changes 2005-06-25 16:24:45 -07:00
efi_stub.S
efi.c [PATCH] ia64 uncached alloc 2005-06-21 18:46:18 -07:00
entry.h [IA64] Drop spurious paren in entry.h 2005-06-20 09:34:02 -07:00
entry.S [IA64] inotify: ia64 syscalls. 2005-07-27 10:46:12 -07:00
fsys.S Auto merge with /home/aegl/GIT/linus 2005-06-15 14:06:48 -07:00
gate-data.S
gate.lds.S
gate.S
head.S
ia64_ksyms.c
init_task.c
iosapic.c [IA64] assign_irq_vector() should not panic 2005-07-11 10:30:07 -07:00
irq_ia64.c [IA64] assign_irq_vector() should not panic 2005-07-11 10:30:07 -07:00
irq_lsapic.c
irq.c
ivt.S [IA64] Speed up lfetch.fault [NULL] 2005-06-28 09:28:16 -07:00
jprobes.S [PATCH] Kprobes/IA64: architecture specific JProbes support 2005-06-23 09:45:22 -07:00
kprobes.c [PATCH] kprobes: fix namespace problem and sparc64 build 2005-07-05 19:19:00 -07:00
machvec.c
Makefile [IA64] fix generic/up builds 2005-07-06 18:18:10 -07:00
mca_asm.S
mca_drv_asm.S [IA64] MCA recovery improvements 2005-05-03 13:47:42 -07:00
mca_drv.c [IA64] MCA recovery improvements 2005-05-03 13:47:42 -07:00
mca_drv.h
mca.c [ACPI] Evaluate CPEI Processor Override flag 2005-07-12 00:01:41 -04:00
minstate.h [IA64] Fix stack placement when INIT hits in kernel mode. 2005-05-06 10:16:07 -07:00
module.c [IA64] Module gp must point to valid memory 2005-06-08 11:41:31 -07:00
numa.c [IA64] fix generic/up builds 2005-07-06 18:18:10 -07:00
pal.S
palinfo.c
patch.c
perfmon_default_smpl.c
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon.c [IA64] remove linux/version.h include from arch/ia64 2005-07-11 09:58:52 -07:00
process.c [PATCH] Don't export machine_restart, machine_halt, or machine_power_off. 2005-07-26 14:35:42 -07:00
ptrace.c Auto merge with /home/aegl/GIT/ia64-test 2005-06-28 08:24:49 -07:00
sal.c
salinfo.c
semaphore.c
setup.c Auto merge with /home/aegl/GIT/linus 2005-07-13 12:15:43 -07:00
sigframe.h
signal.c [IA64] restore_sigcontext is not preempt safe 2005-07-06 15:31:15 -07:00
smp.c [IA64] Fix another IA64 preemption problem 2005-06-28 10:01:19 -07:00
smpboot.c [IA64] fix generic/up builds 2005-07-06 18:18:10 -07:00
sys_ia64.c [IA64] sys_mmap doesn't follow posix.1 when parameter len=0 2005-05-26 10:19:07 -07:00
time.c
topology.c [IA64] Fix undefined reference to can_cpei_retarget for simulator 2005-07-14 09:21:47 -07:00
traps.c [IA64] Make ia64 die() preempt safe 2005-07-06 15:44:55 -07:00
unaligned.c
uncached.c [PATCH] ia64 uncached alloc 2005-06-21 18:46:18 -07:00
unwind_decoder.c
unwind_i.h
unwind.c [IA64] unwind.c uses wrong unat from switch_stack 2005-07-27 14:18:08 -07:00
vmlinux.lds.S [PATCH] kprobes/ia64: refuse kprobe on ivt code 2005-06-27 15:23:54 -07:00