diff options
Diffstat (limited to 'arch/parisc/kernel/unwind.c')
| -rw-r--r-- | arch/parisc/kernel/unwind.c | 9 | 
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index 76ed62ed785..ddd988b267a 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c @@ -168,7 +168,7 @@ void unwind_table_remove(struct unwind_table *table)  }  /* Called from setup_arch to import the kernel unwind info */ -int unwind_init(void) +int __init unwind_init(void)  {  	long start, stop;  	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);  	if (e == NULL) {  		unsigned long sp; -		extern char _stext[], _etext[];  		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;  			info->prev_ip = tmp;  			sp = info->prev_sp; -		} while (info->prev_ip < (unsigned long)_stext || -			 info->prev_ip > (unsigned long)_etext); +		} while (!kernel_text_address(info->prev_ip));  		info->rp = 0; @@ -435,9 +433,8 @@ unsigned long return_address(unsigned int level)  	do {  		if (unwind_once(&info) < 0 || info.ip == 0)  			return 0; -		if (!__kernel_text_address(info.ip)) { +		if (!kernel_text_address(info.ip))  			return 0; -		}  	} while (info.ip && level--);  	return info.ip;  | 
