linux_dsm_epyc7002/arch/mips
Tony Wu e7438c4b89 MIPS: Fix sibling call handling in get_frame_info
Given a function, get_frame_info() analyzes its instructions
to figure out frame size and return address. get_frame_info()
works as follows:

1. analyze up to 128 instructions if the function size is unknown
2. search for 'addiu/daddiu sp,sp,-immed' for frame size
3. search for 'sw ra,offset(sp)' for return address
4. end search when it sees jr/jal/jalr

This leads to an issue when the given function is a sibling
call, example shown as follows.

801ca110 <schedule>:
801ca110:       8f820000        lw      v0,0(gp)
801ca114:       8c420000        lw      v0,0(v0)
801ca118:       080726f0        j       801c9bc0 <__schedule>
801ca11c:       00000000        nop

801ca120 <io_schedule>:
801ca120:       27bdffe8        addiu   sp,sp,-24
801ca124:       3c028022        lui     v0,0x8022
801ca128:       afbf0014        sw      ra,20(sp)

In this case, get_frame_info() cannot properly detect schedule's
frame info, and eventually returns io_schedule's instead.

This patch adds 'j' to the end search condition to workaround
sibling call cases.

Signed-off-by: Tony Wu <tung7970@gmail.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/5236/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2013-05-17 20:59:28 +02:00
..
alchemy MIPS: Kconfig: remove "config MIPS_DISABLE_OBSOLETE_IDE" 2013-05-08 01:19:06 +02:00
ar7 MIPS: FW: Remove obsolete header file for MTI platforms. 2013-05-08 12:30:10 +02:00
ath79 MIPS: ath79: make use of the new memory detection code 2013-05-08 01:19:12 +02:00
bcm47xx Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into mips-for-linux-next 2013-02-22 10:07:30 +01:00
bcm63xx Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
boot MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
cavium-octeon MIPS: octeon: Fix GPIO number in IRQ chip private data 2013-05-08 01:19:07 +02:00
cobalt MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
configs Merge branch 'mti-next' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next 2013-05-09 17:57:30 +02:00
dec MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
emma MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fw MIPS: FW: Add environment variable processing. 2013-05-08 12:30:09 +02:00
include MIPS: Make virt_to_phys() work for all unmapped addresses. 2013-05-17 20:36:15 +02:00
jazz Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
jz4740 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kernel MIPS: Fix sibling call handling in get_frame_info 2013-05-17 20:59:28 +02:00
kvm Revert "MIPS: Allow ASID size to be determined at boot time." 2013-05-16 20:35:42 +02:00
lantiq MIPS: Xway: Fix clk leak 2013-05-17 20:35:53 +02:00
lasat procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
lib Revert "MIPS: Allow ASID size to be determined at boot time." 2013-05-16 20:35:42 +02:00
loongson mips: loongson: use GPIO driver on CONFIG_GPIOLIB 2013-03-20 22:48:13 +09:00
loongson1 Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
math-emu MIPS: microMIPS: Floating point support. 2013-05-09 17:55:18 +02:00
mm Revert "MIPS: Allow ASID size to be determined at boot time." 2013-05-16 20:35:42 +02:00
mti-malta Merge branch 'mti-next' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next 2013-05-09 17:57:30 +02:00
mti-sead3 MIPS: Move 'gic_present' to common location. 2013-05-09 17:55:20 +02:00
netlogic MIPS: Netlogic: Merge platform usb.h to usb-init.c 2013-05-08 01:19:05 +02:00
oprofile MIPS: Netlogic: Fix oprofile compile on XLR uniprocessor 2013-05-08 01:19:05 +02:00
pci Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
pmcs-msp71xx MIPS: MSP71xx: remove inline marking of EXPORT_SYMBOL functions 2013-05-17 20:36:32 +02:00
pnx833x MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
power MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
powertv MIPS: FW: Remove obsolete header file for MTI platforms. 2013-05-08 12:30:10 +02:00
ralink Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
rb532 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip22 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip27 Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
sgi-ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sibyte mips: single_open() leaks 2013-05-05 00:10:21 -04:00
sni Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
txx9 mips: txx9: change GENERIC_GPIO to GPIOLIB 2013-03-20 22:48:14 +09:00
vr41xx MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
wrppmc MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
Kbuild KVM/MIPS32: Infrastructure/build files. 2013-05-08 03:55:34 +02:00
Kbuild.platforms Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
Kconfig Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
Kconfig.debug Fix typo in various Kconfig file 2012-04-16 14:40:08 +02:00
Makefile MIPS: microMIPS: Add configuration option for microMIPS kernel. 2013-05-09 17:55:19 +02:00