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:

> 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

Reply via email to