All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

             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.