From: Julien Grall <julien.grall@linaro.org>
To: xen-devel@lists.xen.org
Cc: andre.przywara@arm.com, sstabellini@kernel.org,
Julien Grall <julien.grall@linaro.org>
Subject: [PATCH for-4.10] xen/arm: mm: Rework MAIR* definitions to handle 32-bit compilation environment
Date: Wed, 11 Oct 2017 15:15:33 +0100 [thread overview]
Message-ID: <20171011141533.11231-1-julien.grall@linaro.org> (raw)
Commit a0543df403 "xen/arm: page: Clean-up the definition of MAIRVAL"
combined the definition of MAIR0VAL and MAIR1VAL in MAIRVAL. Sadly, when
building in 32-bit environment, the assembler is unable to compute
64-bit constant and will ignore the 32-bit most-significants bits. This
will result of MAIR1 set 0.
Rather than fully reverting the offending commit, the code is reworked
to still avoid hardcoded values but split the definition in 2.
Lastly, a comment is added to avoid trying to blindly combine the both
definition again in the future.
Signed-off-by: Julien Grall <julien.grall@linaro.org>
---
xen/include/asm-arm/page.h | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h
index f558184e10..d948250a4a 100644
--- a/xen/include/asm-arm/page.h
+++ b/xen/include/asm-arm/page.h
@@ -52,18 +52,23 @@
* ?? 101
* reserved 110
* MT_NORMAL 111 1111 1111 -- Write-back write-allocate
+ *
+ * /!\ It is not possible to combine the definition in MAIRVAL and then
+ * split because it would result to a 64-bit value that some assembler
+ * doesn't understand.
*/
-#define MAIR(attr, mt) (_AC(attr, ULL) << ((mt) * 8))
+#define _MAIR0(attr, mt) (_AC(attr, ULL) << ((mt) * 8))
+#define _MAIR1(attr, mt) (_AC(attr, ULL) << (((mt) * 8) - 32))
+
+#define MAIR0VAL (_MAIR0(0x00, MT_DEVICE_nGnRnE)| \
+ _MAIR0(0x44, MT_NORMAL_NC) | \
+ _MAIR0(0xaa, MT_NORMAL_WT) | \
+ _MAIR0(0xee, MT_NORMAL_WB))
-#define MAIRVAL (MAIR(0x00, MT_DEVICE_nGnRnE)| \
- MAIR(0x44, MT_NORMAL_NC) | \
- MAIR(0xaa, MT_NORMAL_WT) | \
- MAIR(0xee, MT_NORMAL_WB) | \
- MAIR(0x04, MT_DEVICE_nGnRE) | \
- MAIR(0xff, MT_NORMAL))
+#define MAIR1VAL (_MAIR1(0x04, MT_DEVICE_nGnRE) | \
+ _MAIR1(0xff, MT_NORMAL))
-#define MAIR0VAL (MAIRVAL & 0xffffffff)
-#define MAIR1VAL (MAIRVAL >> 32)
+#define MAIRVAL (MAIR1VAL << 32 | MAIR0VAL)
/*
* Layout of the flags used for updating the hypervisor page tables
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next reply other threads:[~2017-10-11 14:15 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-11 14:15 Julien Grall [this message]
2017-10-11 14:40 ` [PATCH for-4.10] xen/arm: mm: Rework MAIR* definitions to handle 32-bit compilation environment Andre Przywara
2017-10-11 18:40 ` Stefano Stabellini
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=20171011141533.11231-1-julien.grall@linaro.org \
--to=julien.grall@linaro.org \
--cc=andre.przywara@arm.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xen.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).