2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-25 05:34:00 +08:00
linux-next/arch/ia64
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
..
configs [IA64] remove CONFIG_IA64_SGI_SN_SIM 2005-07-12 14:13:08 -07:00
dig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hp [IA64] assign_irq_vector() should not panic 2005-07-11 10:30:07 -07:00
ia32 [PATCH] compat: introduce compat_time_t 2005-06-23 09:45:32 -07:00
kernel [IA64] unwind.c uses wrong unat from switch_stack 2005-07-27 14:18:08 -07:00
lib [IA64] improve flush_icache_range() 2005-07-12 15:33:18 -07:00
mm [IA64] fix generic/up builds 2005-07-06 18:18:10 -07:00
oprofile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci [IA64] pcibus_to_node implementation for IA64 2005-07-12 11:04:22 -07:00
scripts Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sn [PATCH] fix MAX_USER_RT_PRIO and MAX_RT_PRIO 2005-07-26 15:40:00 -07:00
defconfig [PATCH] update all defconfigs for ARCH_DISCONTIGMEM_ENABLE 2005-06-23 09:45:02 -07:00
install.sh Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig Auto merge with /home/aegl/GIT/linus 2005-07-13 12:15:43 -07:00
Kconfig.debug [PATCH] Kprobes/IA64: arch specific handling 2005-06-23 09:45:22 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
module.lds Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00