On Fri, Apr 03, 2015 at 10:05:06AM -0600, An?bal Lim?n wrote: > Any comment or feedback? I feel like I am missing something obvious, but could you explain the use case a little more clearly? > > alimon > > On 26/03/15 10:19, An?bal Lim?n wrote: > >Summary of changes, > > > >configure.ac: Add test for detect x32 ABI. > >purgatory/arch/x86_64/Makefile: Not use mcmodel large when > > x32 ABI is set. > >kexec/arch/x86_64/kexec-elf-rel-x86_64.c: When x32 ABI is set > > use ELFCLASS32 instead of ELFCLASS64. > >kexec/kexec-syscall.h: Add correct syscall number for x32 ABI. > > > >Signed-off-by: An?bal Lim?n <anibal.limon at linux.intel.com> > >Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com> > >--- > > configure.ac | 9 +++++++++ > > kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 4 ++++ > > kexec/kexec-syscall.h | 4 ++++ > > purgatory/arch/x86_64/Makefile | 4 +++- > > 4 files changed, 20 insertions(+), 1 deletion(-) > > > >diff --git a/configure.ac b/configure.ac > >index c410e90..1ecadd5 100644 > >--- a/configure.ac > >+++ b/configure.ac > >@@ -52,6 +52,15 @@ case $target_cpu in > > ;; > > ia64|x86_64|alpha|m68k ) > > ARCH="$target_cpu" > >+ > >+ dnl ---Test for x32 ABI in x86_64 > >+ if test "x$ARCH" = "xx86_64" ; then > >+ AC_EGREP_CPP(x32_test, > >+ [#if defined(__x86_64__) && defined (__ILP32__) > >+ x32_test > >+ #endif > >+ ], SUBARCH='x32', SUBARCH='64') > >+ fi > > ;; > > * ) > > AC_MSG_ERROR([unsupported architecture $target_cpu]) > >diff --git a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c > >index c795037..06db7f0 100644 > >--- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c > >+++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c > >@@ -8,7 +8,11 @@ int machine_verify_elf_rel(struct mem_ehdr *ehdr) > > if (ehdr->ei_data != ELFDATA2LSB) { > > return 0; > > } > >+#ifdef __ILP32__ > >+ if (ehdr->ei_class != ELFCLASS32) { > >+#else > > if (ehdr->ei_class != ELFCLASS64) { > >+#endif > > return 0; > > } > > if (ehdr->e_machine != EM_X86_64) { > >diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h > >index ce2e20b..cab5535 100644 > >--- a/kexec/kexec-syscall.h > >+++ b/kexec/kexec-syscall.h > >@@ -31,8 +31,12 @@ > > #define __NR_kexec_load 268 > > #endif > > #ifdef __x86_64__ > >+#ifdef __ILP32__ > >+#define __NR_kexec_load 528 > >+#else > > #define __NR_kexec_load 246 > > #endif > >+#endif > > #ifdef __s390x__ > > #define __NR_kexec_load 277 > > #endif > >diff --git a/purgatory/arch/x86_64/Makefile b/purgatory/arch/x86_64/Makefile > >index 7300937..4af11e4 100644 > >--- a/purgatory/arch/x86_64/Makefile > >+++ b/purgatory/arch/x86_64/Makefile > >@@ -23,4 +23,6 @@ x86_64_PURGATORY_SRCS += purgatory/arch/i386/console-x86.c > > x86_64_PURGATORY_SRCS += purgatory/arch/i386/vga.c > > x86_64_PURGATORY_SRCS += purgatory/arch/i386/pic.c > >-x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large > >+ifeq ($(SUBARCH),64) > >+ x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large > >+endif > > > _______________________________________________ > kexec mailing list > kexec at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec