From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: grub-devel@gnu.org
Subject: Re: [RFT] Use pair of shifts instead of and in ARM code
Date: Wed, 13 Nov 2013 15:56:23 +0100 [thread overview]
Message-ID: <52839317.2050204@gmail.com> (raw)
In-Reply-To: <20131113141608.GT1557@rocoto.smurfnet.nu>
[-- Attachment #1: Type: text/plain, Size: 1858 bytes --]
On 13.11.2013 15:16, Leif Lindholm wrote:
> On Wed, Nov 13, 2013 at 01:00:17AM +0100, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
>> 1ff and 3fff can't be easily loaded on ARM. This patch replaces load+and
>> with pair of shift to keep only wanted bits.
>
> Actually, on ARMv7 we could just use MOVW instead:
>
Another goal of this patch was to make this code compilable with clang
(just a silly experiment) which lacks many useful ARM facilities
including architecture switching in file (other than thumb<->arm). This
was one of culprits. The other one was that I had to manually assemble
barrier instructions.
>> diff --git a/grub-core/kern/arm/cache_armv7.S
>> b/grub-core/kern/arm/cache_armv7.S
>> index 0c16b10..454bad3 100644
>> --- a/grub-core/kern/arm/cache_armv7.S
>> +++ b/grub-core/kern/arm/cache_armv7.S
>> @@ -58,11 +64,17 @@ clean_invalidate_dcache:
>> @ read current cache information
>> mrc p15, 1, r8, c0, c0, 0 @ Read CCSIDR
>> lsr r3, r8, #13 @ Number of sets -1
>> - ldr r9, =0x3fff
> movw r9, #0x3fff
>> - and r3, r3, r9
>> +
>> + @ Keep only 14 bits of r3
>> + lsl r3, r3, #18
>> + lsr r3, r3, #18
>> +
>> lsr r4, r8, #3 @ Number of ways -1
>> - ldr r9, =0x1ff
> movw r9, #0x1ff
>> - and r4, r4, r9
>> +
>> + @ Keep only 9 bits of r4
>> + lsl r4, r4, #23
>> + lsr r4, r4, #23
>> +
>> and r7, r8, #7 @ log2(line size in words) - 2
>> add r7, r7, #2 @ adjust
>> mov r8, #1
>>
>
> /
> Leif
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 291 bytes --]
prev parent reply other threads:[~2013-11-13 14:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-13 0:00 [RFT] Use pair of shifts instead of and in ARM code Vladimir 'φ-coder/phcoder' Serbinenko
2013-11-13 14:16 ` Leif Lindholm
2013-11-13 14:56 ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
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=52839317.2050204@gmail.com \
--to=phcoder@gmail.com \
--cc=grub-devel@gnu.org \
/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.