|
@@ -26,7 +26,7 @@ static int save_return_addr(struct stackframe *frame, void *d)
|
|
|
struct return_address_data *data = d;
|
|
|
|
|
|
if (!data->level) {
|
|
|
- data->addr = (void *)frame->lr;
|
|
|
+ data->addr = (void *)frame->pc;
|
|
|
|
|
|
return 1;
|
|
|
} else {
|
|
@@ -41,7 +41,8 @@ void *return_address(unsigned int level)
|
|
|
struct stackframe frame;
|
|
|
register unsigned long current_sp asm ("sp");
|
|
|
|
|
|
- data.level = level + 1;
|
|
|
+ data.level = level + 2;
|
|
|
+ data.addr = NULL;
|
|
|
|
|
|
frame.fp = (unsigned long)__builtin_frame_address(0);
|
|
|
frame.sp = current_sp;
|