semihosting: Retrieve stack top from image_info
Remove the write-once field TaskState.stack_base, and use the same value from struct image_info. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
5fc03d4e28
commit
05c84cf8df
6 changed files with 5 additions and 6 deletions
|
|
@ -168,7 +168,6 @@ void target_cpu_copy_regs(CPUArchState *env, target_pt_regs *regs)
|
|||
qemu_guest_getrandom_nofail(&env->keys, sizeof(env->keys));
|
||||
}
|
||||
|
||||
ts->stack_base = info->start_stack;
|
||||
ts->heap_base = info->brk;
|
||||
/* This will be filled in on the first SYS_HEAPINFO call. */
|
||||
ts->heap_limit = 0;
|
||||
|
|
|
|||
|
|
@ -504,7 +504,6 @@ void target_cpu_copy_regs(CPUArchState *env, target_pt_regs *regs)
|
|||
arm_rebuild_hflags(env);
|
||||
#endif
|
||||
|
||||
ts->stack_base = info->start_stack;
|
||||
ts->heap_base = info->brk;
|
||||
/* This will be filled in on the first SYS_HEAPINFO call. */
|
||||
ts->heap_limit = 0;
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@ void target_cpu_copy_regs(CPUArchState *env, target_pt_regs *regs)
|
|||
env->aregs[7] = regs->usp;
|
||||
env->sr = regs->sr;
|
||||
|
||||
ts->stack_base = info->start_stack;
|
||||
ts->heap_base = info->brk;
|
||||
/* This will be filled in on the first SYS_HEAPINFO call. */
|
||||
ts->heap_limit = 0;
|
||||
|
|
|
|||
|
|
@ -127,7 +127,6 @@ struct TaskState {
|
|||
abi_ulong heap_base;
|
||||
abi_ulong heap_limit;
|
||||
#endif
|
||||
abi_ulong stack_base;
|
||||
int used; /* non zero if used */
|
||||
struct image_info *info;
|
||||
struct linux_binprm *bprm;
|
||||
|
|
|
|||
|
|
@ -109,7 +109,6 @@ void target_cpu_copy_regs(CPUArchState *env, target_pt_regs *regs)
|
|||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
ts->stack_base = info->start_stack;
|
||||
ts->heap_base = info->brk;
|
||||
/* This will be filled in on the first SYS_HEAPINFO call. */
|
||||
ts->heap_limit = 0;
|
||||
|
|
|
|||
|
|
@ -696,7 +696,11 @@ void do_common_semihosting(CPUState *cs)
|
|||
|
||||
retvals[0] = ts->heap_base;
|
||||
retvals[1] = ts->heap_limit;
|
||||
retvals[2] = ts->stack_base;
|
||||
/*
|
||||
* Note that semihosting is *not* thread aware.
|
||||
* Always return the stack base of the main thread.
|
||||
*/
|
||||
retvals[2] = ts->info->start_stack;
|
||||
retvals[3] = 0; /* Stack limit. */
|
||||
#else
|
||||
retvals[0] = info.heapbase; /* Heap Base */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue