From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: [PATCH] Compile asm-files to thumb2
Date: Thu, 14 Nov 2013 08:39:31 +0100 [thread overview]
Message-ID: <52847E33.2020901@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 2196 bytes --]
diff --git a/grub-core/kern/arm/cache.S b/grub-core/kern/arm/cache.S
index 8522d24..2ad774d 100644
--- a/grub-core/kern/arm/cache.S
+++ b/grub-core/kern/arm/cache.S
@@ -21,7 +21,12 @@
.file "cache.S"
.text
.syntax unified
+#if !defined (__thumb2__) || !defined (ARMV7)
.arm
+#else
+ .thumb
+#endif
+
#if !defined (ARMV6) && !defined (ARMV7)
# error Unsupported architecture version!
#endif
diff --git a/grub-core/kern/arm/cache_armv7.S b/grub-core/kern/arm/cache_armv7.S
index 0c16b10..aa42fad 100644
--- a/grub-core/kern/arm/cache_armv7.S
+++ b/grub-core/kern/arm/cache_armv7.S
@@ -21,8 +21,13 @@
.file "cache_armv7.S"
.text
.syntax unified
- .arm
+#if !defined (__thumb2__)
.arch armv7a
+ .arm
+#else
+ .arch armv7
+ .thumb
+#endif
# define DMB dmb
# define DSB dsb
# define ISB isb
@@ -58,11 +63,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
- 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
- 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
diff --git a/grub-core/lib/arm/setjmp.S b/grub-core/lib/arm/setjmp.S
index 4f15679..b6febfb 100644
--- a/grub-core/lib/arm/setjmp.S
+++ b/grub-core/lib/arm/setjmp.S
@@ -24,7 +24,11 @@
GRUB_MOD_LICENSE "GPLv3+"
.syntax unified
+#if !defined (__thumb2__)
.arm
+#else
+ .thumb
+#endif
.text
@@ -32,7 +36,8 @@ GRUB_MOD_LICENSE "GPLv3+"
* int grub_setjmp (grub_jmp_buf env)
*/
FUNCTION(grub_setjmp)
- stm r0, { r4-r11, sp, lr }
+ stm r0, { r4-r11, lr }
+ str sp, [r0, #36 ]
mov r0, #0
bx lr
@@ -40,7 +45,10 @@ FUNCTION(grub_setjmp)
* int grub_longjmp (grub_jmp_buf env, int val)
*/
FUNCTION(grub_longjmp)
- ldm r0, { r4-r11, sp, lr }
+ ldm r0, { r4-r11, lr }
+ ldr sp, [r0, #36 ]
movs r0, r1
- moveq r0, #1
+ bne 1f
+ mov r0, #1
+1:
bx lr
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 291 bytes --]
next reply other threads:[~2013-11-14 7:41 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 7:39 Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2013-11-16 15:17 ` [PATCH] Compile asm-files to thumb2 Leif Lindholm
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=52847E33.2020901@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.