From: Michael Neuling <mikey@neuling.org>
To: David Woodhouse <dwmw2@infradead.org>
Cc: linuxppc-dev@ozlabs.org, viro@zeniv.linux.org.uk
Subject: Re: [PATCH] powerpc: provide __bswapdi2
Date: Mon, 13 May 2013 17:09:59 +1000 [thread overview]
Message-ID: <9813.1368428999@ale.ozlabs.ibm.com> (raw)
In-Reply-To: <1368220707.3378.57.camel@shinybook.infradead.org>
David Woodhouse <dwmw2@infradead.org> wrote:
> From: David Woodhouse <David.Woodhouse@intel.com>
>
> Some versions of GCC apparently expect this to be provided by libgcc.
>
> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
> ---
> Untested.
>
> diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
> index 19e096b..f077dc2 100644
> --- a/arch/powerpc/kernel/misc_32.S
> +++ b/arch/powerpc/kernel/misc_32.S
> @@ -657,6 +657,17 @@ _GLOBAL(__ucmpdi2)
> li r3,2
> blr
>
> +_GLOBAL(__bswapdi2)
> + rlwinm 10,4,8,0xffffffff
> + rlwinm 11,3,8,0xffffffff
> + rlwimi 10,4,24,0,7
> + rlwimi 11,3,24,0,7
> + rlwimi 10,4,24,16,23
> + rlwimi 11,3,24,16,23
> + mr 4,11
> + mr 3,10
> + blr
> +
This doesn't work for me but the below does:
_GLOBAL(__bswapdi2)
rotlwi r9,r4,8
rotlwi r10,r3,8
rlwimi r9,r4,24,0,7
rlwimi r10,r3,24,0,7
rlwimi r9,r4,24,16,23
rlwimi r10,r3,24,16,23
mr r4,r10
mr r3,r9
blr
stolen from GCC -02 output of:
unsigned long long __bswapdi2(unsigned long long x)
{
return ((x & 0x00000000000000ffULL) << 56) |
((x & 0x000000000000ff00ULL) << 40) |
((x & 0x0000000000ff0000ULL) << 24) |
((x & 0x00000000ff000000ULL) << 8) |
((x & 0x000000ff00000000ULL) >> 8) |
((x & 0x0000ff0000000000ULL) >> 24) |
((x & 0x00ff000000000000ULL) >> 40) |
((x & 0xff00000000000000ULL) >> 56);
}
> _GLOBAL(abs)
> srawi r4,r3,31
> xor r3,r3,r4
> diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
> index 5cfa800..3b2e6e8 100644
> --- a/arch/powerpc/kernel/misc_64.S
> +++ b/arch/powerpc/kernel/misc_64.S
> @@ -234,6 +234,18 @@ _GLOBAL(__flush_dcache_icache)
> isync
> blr
>
> +_GLOBAL(__bswapdi2)
> + srdi 8,3,32
> + rlwinm 7,3,8,0xffffffff
> + rlwimi 7,3,24,0,7
> + rlwinm 9,8,8,0xffffffff
> + rlwimi 7,3,24,16,23
> + rlwimi 9,8,24,0,7
> + rlwimi 9,8,24,16,23
> + sldi 7,7,32
> + or 7,7,9
> + mr 3,7
> + blr
This works but we should add "r" to the register names.
I'll repost
Mikey
>
> #if defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE)
> /*
> diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
> index 78b8766..c296665 100644
> --- a/arch/powerpc/kernel/ppc_ksyms.c
> +++ b/arch/powerpc/kernel/ppc_ksyms.c
> @@ -143,7 +143,8 @@ EXPORT_SYMBOL(__lshrdi3);
> int __ucmpdi2(unsigned long long, unsigned long long);
> EXPORT_SYMBOL(__ucmpdi2);
> #endif
> -
> +long long __bswapdi2(long long);
> +EXPORT_SYMBOL(__bswapdi2);
> EXPORT_SYMBOL(memcpy);
> EXPORT_SYMBOL(memset);
> EXPORT_SYMBOL(memmove);
>
> --
> dwmw2
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
next prev parent reply other threads:[~2013-05-13 7:09 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-10 21:18 [PATCH] powerpc: provide __bswapdi2 David Woodhouse
2013-05-13 6:48 ` Anton Blanchard
2013-05-13 7:20 ` Alan Modra
2013-05-13 10:27 ` David Woodhouse
2013-05-13 16:47 ` Segher Boessenkool
2013-05-13 7:09 ` Michael Neuling [this message]
2013-05-13 7:20 ` [PATCH v2] " Michael Neuling
2013-05-13 7:33 ` [PATCH] " Gabriel Paubert
2013-05-13 10:23 ` [PATCH v3] " Michael Neuling
2013-05-13 10:33 ` [PATCH] " David Woodhouse
2013-05-13 10:38 ` David Woodhouse
2013-05-13 10:51 ` Joakim Tjernlund
2013-05-13 11:12 ` Joakim Tjernlund
2013-05-13 13:12 ` Gabriel Paubert
2013-05-13 16:55 ` Segher Boessenkool
2013-05-14 1:09 ` Stephen Rothwell
2013-05-14 1:25 ` Michael Neuling
2013-05-14 6:59 ` David Woodhouse
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=9813.1368428999@ale.ozlabs.ibm.com \
--to=mikey@neuling.org \
--cc=dwmw2@infradead.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=viro@zeniv.linux.org.uk \
/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.