diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-01-20 15:19:33 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-01-20 15:19:33 +0000 |
commit | b8d6ac9f90d047cbc8e06366ae33b71ea9c5232c (patch) | |
tree | 1658d990c1e8b6d19b28e6966e95fd2ff3680562 | |
parent | 2ccf97ec0f1b7a62a3220064f305454f3932c55a (diff) |
bsd-user/elfload.c: Don't use ldl() or ldq_raw()
Use get_user_u64() and get_user_ual() instead of the ldl() and
ldq_raw() functions.
[Note that this change is not compile tested as it is actually
in dead code -- none of the bsd-user configurations are PPC.]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 1421334118-3287-6-git-send-email-peter.maydell@linaro.org
-rw-r--r-- | bsd-user/elfload.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/bsd-user/elfload.c b/bsd-user/elfload.c index 93fd9e4259..2bf57eb1fc 100644 --- a/bsd-user/elfload.c +++ b/bsd-user/elfload.c @@ -351,8 +351,10 @@ static inline void init_thread(struct target_pt_regs *_regs, struct image_info * _regs->gpr[1] = infop->start_stack; #if defined(TARGET_PPC64) && !defined(TARGET_ABI32) - entry = ldq_raw(infop->entry) + infop->load_addr; - toc = ldq_raw(infop->entry + 8) + infop->load_addr; + get_user_u64(entry, infop->entry); + entry += infop->load_addr; + get_user_u64(toc, infop->entry + 8); + toc += infop->load_addr; _regs->gpr[2] = toc; infop->entry = entry; #endif @@ -365,8 +367,9 @@ static inline void init_thread(struct target_pt_regs *_regs, struct image_info * get_user_ual(_regs->gpr[3], pos); pos += sizeof(abi_ulong); _regs->gpr[4] = pos; - for (tmp = 1; tmp != 0; pos += sizeof(abi_ulong)) - tmp = ldl(pos); + for (tmp = 1; tmp != 0; pos += sizeof(abi_ulong)) { + get_user_ual(tmp, pos); + } _regs->gpr[5] = pos; } |