diff options
Diffstat (limited to 'target/mips/tcg')
| -rw-r--r-- | target/mips/tcg/exception.c | 1 | ||||
| -rw-r--r-- | target/mips/tcg/meson.build | 2 | ||||
| -rw-r--r-- | target/mips/tcg/system/cp0_helper.c (renamed from target/mips/tcg/sysemu/cp0_helper.c) | 0 | ||||
| -rw-r--r-- | target/mips/tcg/system/lcsr_helper.c (renamed from target/mips/tcg/sysemu/lcsr_helper.c) | 0 | ||||
| -rw-r--r-- | target/mips/tcg/system/meson.build (renamed from target/mips/tcg/sysemu/meson.build) | 0 | ||||
| -rw-r--r-- | target/mips/tcg/system/mips-semi.c (renamed from target/mips/tcg/sysemu/mips-semi.c) | 43 | ||||
| -rw-r--r-- | target/mips/tcg/system/semihosting-stub.c (renamed from target/mips/tcg/sysemu/semihosting-stub.c) | 0 | ||||
| -rw-r--r-- | target/mips/tcg/system/special_helper.c (renamed from target/mips/tcg/sysemu/special_helper.c) | 1 | ||||
| -rw-r--r-- | target/mips/tcg/system/tlb_helper.c (renamed from target/mips/tcg/sysemu/tlb_helper.c) | 0 | ||||
| -rw-r--r-- | target/mips/tcg/system_helper.h.inc (renamed from target/mips/tcg/sysemu_helper.h.inc) | 2 | ||||
| -rw-r--r-- | target/mips/tcg/translate.c | 2 |
11 files changed, 35 insertions, 16 deletions
diff --git a/target/mips/tcg/exception.c b/target/mips/tcg/exception.c index 4886d087b2..1a8902ea1b 100644 --- a/target/mips/tcg/exception.c +++ b/target/mips/tcg/exception.c @@ -24,6 +24,7 @@ #include "internal.h" #include "exec/helper-proto.h" #include "exec/exec-all.h" +#include "exec/translation-block.h" target_ulong exception_resume_pc(CPUMIPSState *env) { diff --git a/target/mips/tcg/meson.build b/target/mips/tcg/meson.build index 7b18e6c4c8..fff9cd6c7f 100644 --- a/target/mips/tcg/meson.build +++ b/target/mips/tcg/meson.build @@ -36,5 +36,5 @@ mips_ss.add(when: 'TARGET_MIPS64', if_true: files( )) if have_system - subdir('sysemu') + subdir('system') endif diff --git a/target/mips/tcg/sysemu/cp0_helper.c b/target/mips/tcg/system/cp0_helper.c index 79a5c833ce..79a5c833ce 100644 --- a/target/mips/tcg/sysemu/cp0_helper.c +++ b/target/mips/tcg/system/cp0_helper.c diff --git a/target/mips/tcg/sysemu/lcsr_helper.c b/target/mips/tcg/system/lcsr_helper.c index 25e03572fe..25e03572fe 100644 --- a/target/mips/tcg/sysemu/lcsr_helper.c +++ b/target/mips/tcg/system/lcsr_helper.c diff --git a/target/mips/tcg/sysemu/meson.build b/target/mips/tcg/system/meson.build index 911341ac37..911341ac37 100644 --- a/target/mips/tcg/sysemu/meson.build +++ b/target/mips/tcg/system/meson.build diff --git a/target/mips/tcg/sysemu/mips-semi.c b/target/mips/tcg/system/mips-semi.c index 5ba06e9573..df0c3256d9 100644 --- a/target/mips/tcg/sysemu/mips-semi.c +++ b/target/mips/tcg/system/mips-semi.c @@ -168,6 +168,7 @@ static void uhi_fstat_cb(CPUState *cs, uint64_t ret, int err) if (!err) { CPUMIPSState *env = cpu_env(cs); + bool swap_needed = HOST_BIG_ENDIAN != mips_env_is_bigendian(env); target_ulong addr = env->active_tc.gpr[5]; UHIStat *dst = lock_user(VERIFY_WRITE, addr, sizeof(UHIStat), 1); struct gdb_stat s; @@ -179,19 +180,35 @@ static void uhi_fstat_cb(CPUState *cs, uint64_t ret, int err) memcpy(&s, dst, sizeof(struct gdb_stat)); memset(dst, 0, sizeof(UHIStat)); - dst->uhi_st_dev = tswap16(be32_to_cpu(s.gdb_st_dev)); - dst->uhi_st_ino = tswap16(be32_to_cpu(s.gdb_st_ino)); - dst->uhi_st_mode = tswap32(be32_to_cpu(s.gdb_st_mode)); - dst->uhi_st_nlink = tswap16(be32_to_cpu(s.gdb_st_nlink)); - dst->uhi_st_uid = tswap16(be32_to_cpu(s.gdb_st_uid)); - dst->uhi_st_gid = tswap16(be32_to_cpu(s.gdb_st_gid)); - dst->uhi_st_rdev = tswap16(be32_to_cpu(s.gdb_st_rdev)); - dst->uhi_st_size = tswap64(be64_to_cpu(s.gdb_st_size)); - dst->uhi_st_atime = tswap64(be32_to_cpu(s.gdb_st_atime)); - dst->uhi_st_mtime = tswap64(be32_to_cpu(s.gdb_st_mtime)); - dst->uhi_st_ctime = tswap64(be32_to_cpu(s.gdb_st_ctime)); - dst->uhi_st_blksize = tswap64(be64_to_cpu(s.gdb_st_blksize)); - dst->uhi_st_blocks = tswap64(be64_to_cpu(s.gdb_st_blocks)); + dst->uhi_st_dev = be32_to_cpu(s.gdb_st_dev); + dst->uhi_st_ino = be32_to_cpu(s.gdb_st_ino); + dst->uhi_st_mode = be32_to_cpu(s.gdb_st_mode); + dst->uhi_st_nlink = be32_to_cpu(s.gdb_st_nlink); + dst->uhi_st_uid = be32_to_cpu(s.gdb_st_uid); + dst->uhi_st_gid = be32_to_cpu(s.gdb_st_gid); + dst->uhi_st_rdev = be32_to_cpu(s.gdb_st_rdev); + dst->uhi_st_size = be64_to_cpu(s.gdb_st_size); + dst->uhi_st_atime = be32_to_cpu(s.gdb_st_atime); + dst->uhi_st_mtime = be32_to_cpu(s.gdb_st_mtime); + dst->uhi_st_ctime = be32_to_cpu(s.gdb_st_ctime); + dst->uhi_st_blksize = be64_to_cpu(s.gdb_st_blksize); + dst->uhi_st_blocks = be64_to_cpu(s.gdb_st_blocks); + + if (swap_needed) { + dst->uhi_st_dev = bswap16(dst->uhi_st_dev); + dst->uhi_st_ino = bswap16(dst->uhi_st_ino); + dst->uhi_st_mode = bswap32(dst->uhi_st_mode); + dst->uhi_st_nlink = bswap16(dst->uhi_st_nlink); + dst->uhi_st_uid = bswap16(dst->uhi_st_uid); + dst->uhi_st_gid = bswap16(dst->uhi_st_gid); + dst->uhi_st_rdev = bswap16(dst->uhi_st_rdev); + dst->uhi_st_size = bswap64(dst->uhi_st_size); + dst->uhi_st_atime = bswap64(dst->uhi_st_atime); + dst->uhi_st_mtime = bswap64(dst->uhi_st_mtime); + dst->uhi_st_ctime = bswap64(dst->uhi_st_ctime); + dst->uhi_st_blksize = bswap64(dst->uhi_st_blksize); + dst->uhi_st_blocks = bswap64(dst->uhi_st_blocks); + } unlock_user(dst, addr, sizeof(UHIStat)); } diff --git a/target/mips/tcg/sysemu/semihosting-stub.c b/target/mips/tcg/system/semihosting-stub.c index 7ae27d746f..7ae27d746f 100644 --- a/target/mips/tcg/sysemu/semihosting-stub.c +++ b/target/mips/tcg/system/semihosting-stub.c diff --git a/target/mips/tcg/sysemu/special_helper.c b/target/mips/tcg/system/special_helper.c index 9ce5e2ceac..3ce3ae1e12 100644 --- a/target/mips/tcg/sysemu/special_helper.c +++ b/target/mips/tcg/system/special_helper.c @@ -23,6 +23,7 @@ #include "cpu.h" #include "exec/helper-proto.h" #include "exec/exec-all.h" +#include "exec/translation-block.h" #include "internal.h" /* Specials */ diff --git a/target/mips/tcg/sysemu/tlb_helper.c b/target/mips/tcg/system/tlb_helper.c index e98bb95951..e98bb95951 100644 --- a/target/mips/tcg/sysemu/tlb_helper.c +++ b/target/mips/tcg/system/tlb_helper.c diff --git a/target/mips/tcg/sysemu_helper.h.inc b/target/mips/tcg/system_helper.h.inc index 1861d538de..eaac5e2c6f 100644 --- a/target/mips/tcg/sysemu_helper.h.inc +++ b/target/mips/tcg/system_helper.h.inc @@ -1,5 +1,5 @@ /* - * QEMU MIPS sysemu helpers + * QEMU MIPS TCG system helpers * * Copyright (c) 2004-2005 Jocelyn Mayer * Copyright (c) 2006 Marius Groeger (FPU operations) diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index de7045874d..bd1ef4e1fc 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -37,7 +37,7 @@ /* - * Many sysemu-only helpers are not reachable for user-only. + * Many system-only helpers are not reachable for user-only. * Define stub generators here, so that we need not either sprinkle * ifdefs through the translator, nor provide the helper function. */ |