Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c790b41b authored by Helge Deller's avatar Helge Deller
Browse files

parisc: use kernel_text_address() in unwind functions



Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 6c3215cd
Loading
Loading
Loading
Loading
+3 −6
Original line number Original line Diff line number Diff line
@@ -168,7 +168,7 @@ void unwind_table_remove(struct unwind_table *table)
}
}


/* Called from setup_arch to import the kernel unwind info */
/* Called from setup_arch to import the kernel unwind info */
int unwind_init(void)
int __init unwind_init(void)
{
{
	long start, stop;
	long start, stop;
	register unsigned long gp __asm__ ("r27");
	register unsigned long gp __asm__ ("r27");
@@ -233,7 +233,6 @@ static void unwind_frame_regs(struct unwind_frame_info *info)
	e = find_unwind_entry(info->ip);
	e = find_unwind_entry(info->ip);
	if (e == NULL) {
	if (e == NULL) {
		unsigned long sp;
		unsigned long sp;
		extern char _stext[], _etext[];


		dbg("Cannot find unwind entry for 0x%lx; forced unwinding\n", info->ip);
		dbg("Cannot find unwind entry for 0x%lx; forced unwinding\n", info->ip);


@@ -281,8 +280,7 @@ static void unwind_frame_regs(struct unwind_frame_info *info)
				break;
				break;
			info->prev_ip = tmp;
			info->prev_ip = tmp;
			sp = info->prev_sp;
			sp = info->prev_sp;
		} while (info->prev_ip < (unsigned long)_stext ||
		} while (!kernel_text_address(info->prev_ip));
			 info->prev_ip > (unsigned long)_etext);


		info->rp = 0;
		info->rp = 0;


@@ -435,9 +433,8 @@ unsigned long return_address(unsigned int level)
	do {
	do {
		if (unwind_once(&info) < 0 || info.ip == 0)
		if (unwind_once(&info) < 0 || info.ip == 0)
			return 0;
			return 0;
		if (!__kernel_text_address(info.ip)) {
		if (!kernel_text_address(info.ip))
			return 0;
			return 0;
		}
	} while (info.ip && level--);
	} while (info.ip && level--);


	return info.ip;
	return info.ip;