All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Aníbal Limón" <anibal.limon@linux.intel.com>
To: Simon Horman <horms@verge.net.au>
Cc: Mariano Lopez <mariano.lopez@linux.intel.com>, kexec@lists.infradead.org
Subject: Re: [PATCH] x86_64: Add support to build kexec-tools with x32 ABI
Date: Mon, 06 Apr 2015 10:55:47 -0500	[thread overview]
Message-ID: <5522AC83.4090006@linux.intel.com> (raw)
In-Reply-To: <20150406010447.GD23396@verge.net.au>


On 05/04/15 20:04, Simon Horman wrote:
> 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?

I'm working in the Yocto Project enabling x32 ABI support, the x32 ABI 
enables
programs to work with 32-bit address space and support of benefits of 
64-bit mode
like register calling convention, this improves performance in some 
applications,
details [1][2].

I don't know if this answer your question?

Cheers,
     alimon

[1] https://sites.google.com/site/x32abi/
[2] http://en.wikipedia.org/wiki/X32_ABI

>
>>      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@linux.intel.com>
>>> Signed-off-by: Mariano Lopez <mariano.lopez@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@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2015-04-06 15:56 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-26 16:19 [PATCH] x86_64: Add support to build kexec-tools with x32 ABI Aníbal Limón
2015-04-03 16:05 ` Aníbal Limón
2015-04-06  1:04   ` Simon Horman
2015-04-06 15:55     ` Aníbal Limón [this message]
2015-04-07  1:23       ` Simon Horman
2015-04-08 17:53         ` Aníbal Limón
2015-04-09  2:10           ` Simon Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5522AC83.4090006@linux.intel.com \
    --to=anibal.limon@linux.intel.com \
    --cc=horms@verge.net.au \
    --cc=kexec@lists.infradead.org \
    --cc=mariano.lopez@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.