Skip to content

Commit

Permalink
linux-user: MIPS set cpu to r6 CPU if binary is R6
Browse files Browse the repository at this point in the history
So here we need to detect the version of binaries and set
cpu_model for it.

Signed-off-by: YunQiang Su <[email protected]>
[lv: original patch modified to move code into cpu_get_model()]
Signed-off-by: Laurent Vivier <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-Id: <[email protected]>
  • Loading branch information
wzssyqa authored and vivier committed Feb 25, 2018
1 parent 33dff5f commit 45506bd
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
7 changes: 7 additions & 0 deletions include/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,20 @@ typedef int64_t Elf64_Sxword;

/* Flags in the e_flags field of the header */
/* MIPS architecture level. */
#define EF_MIPS_ARCH 0xf0000000

/* Legal values for MIPS architecture level. */
#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */
#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */
#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */
#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */
#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */
#define EF_MIPS_ARCH_32 0x50000000 /* MIPS32 code. */
#define EF_MIPS_ARCH_64 0x60000000 /* MIPS64 code. */
#define EF_MIPS_ARCH_32R2 0x70000000 /* MIPS32r2 code. */
#define EF_MIPS_ARCH_64R2 0x80000000 /* MIPS64r2 code. */
#define EF_MIPS_ARCH_32R6 0x90000000 /* MIPS32r6 code. */
#define EF_MIPS_ARCH_64R6 0xa0000000 /* MIPS64r6 code. */

/* The ABI of a file. */
#define EF_MIPS_ABI_O32 0x00001000 /* O32 ABI. */
Expand Down
3 changes: 3 additions & 0 deletions linux-user/mips/target_elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
#define MIPS_TARGET_ELF_H
static inline const char *cpu_get_model(uint32_t eflags)
{
if ((eflags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32R6) {
return "mips32r6-generic";
}
return "24Kf";
}
#endif
3 changes: 3 additions & 0 deletions linux-user/mips64/target_elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
#define MIPS64_TARGET_ELF_H
static inline const char *cpu_get_model(uint32_t eflags)
{
if ((eflags & EF_MIPS_ARCH) == EF_MIPS_ARCH_64R6) {
return "I6400";
}
return "5KEf";
}
#endif

0 comments on commit 45506bd

Please sign in to comment.