فهرست منبع

hw/mips: Simplify loading 64-bit ELF kernels

Since 82790064116 ("Cast ELF datatypes properly to host 64bit types")
we don't need to sign-extend the entry_point address. Remove this
unnecessary code.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20200927163943.614604-2-f4bug@amsat.org>
Philippe Mathieu-Daudé 4 سال پیش
والد
کامیت
9d585eaa87
2فایلهای تغییر یافته به همراه2 افزوده شده و 10 حذف شده
  1. 1 5
      hw/mips/mipssim.c
  2. 1 5
      hw/mips/r4k.c

+ 1 - 5
hw/mips/mipssim.c

@@ -77,11 +77,7 @@ static int64_t load_kernel(void)
                            (uint64_t *)&entry, NULL,
                            (uint64_t *)&entry, NULL,
                            (uint64_t *)&kernel_high, NULL, big_endian,
                            (uint64_t *)&kernel_high, NULL, big_endian,
                            EM_MIPS, 1, 0);
                            EM_MIPS, 1, 0);
-    if (kernel_size >= 0) {
-        if ((entry & ~0x7fffffffULL) == 0x80000000) {
-            entry = (int32_t)entry;
-        }
-    } else {
+    if (kernel_size < 0) {
         error_report("could not load kernel '%s': %s",
         error_report("could not load kernel '%s': %s",
                      loaderparams.kernel_filename,
                      loaderparams.kernel_filename,
                      load_elf_strerror(kernel_size));
                      load_elf_strerror(kernel_size));

+ 1 - 5
hw/mips/r4k.c

@@ -102,11 +102,7 @@ static int64_t load_kernel(void)
                            (uint64_t *)&entry, NULL,
                            (uint64_t *)&entry, NULL,
                            (uint64_t *)&kernel_high, NULL, big_endian,
                            (uint64_t *)&kernel_high, NULL, big_endian,
                            EM_MIPS, 1, 0);
                            EM_MIPS, 1, 0);
-    if (kernel_size >= 0) {
-        if ((entry & ~0x7fffffffULL) == 0x80000000) {
-            entry = (int32_t)entry;
-        }
-    } else {
+    if (kernel_size < 0) {
         error_report("could not load kernel '%s': %s",
         error_report("could not load kernel '%s': %s",
                      loaderparams.kernel_filename,
                      loaderparams.kernel_filename,
                      load_elf_strerror(kernel_size));
                      load_elf_strerror(kernel_size));