[xen master] xen/arm: cpufeature: Add helper to check constant caps

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[xen master] xen/arm: cpufeature: Add helper to check constant caps

patchbot
commit 579401fb8e5f33dda461d872bf5a711072662d59
Author:     Julien Grall <[hidden email]>
AuthorDate: Mon Oct 1 13:46:37 2018 +0100
Commit:     Stefano Stabellini <[hidden email]>
CommitDate: Mon Oct 1 13:45:15 2018 -0700

    xen/arm: cpufeature: Add helper to check constant caps
   
    Some capababilities are set right during boot and will never change
    afterwards. At the moment, the function cpu_have_caps will check whether
    the cap is enabled from the memory.
   
    It is possible to avoid the load from the memory by using an
    ALTERNATIVE. With that the check is just reduced to 1 instruction.
   
    Signed-off-by: Julien Grall <[hidden email]>
    Reviewed-by: Stefano Stabellini <[hidden email]>
---
 xen/include/asm-arm/cpufeature.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h
index 3de6b54301..c6cbc2ec84 100644
--- a/xen/include/asm-arm/cpufeature.h
+++ b/xen/include/asm-arm/cpufeature.h
@@ -63,6 +63,18 @@ static inline bool cpus_have_cap(unsigned int num)
     return test_bit(num, cpu_hwcaps);
 }
 
+/* System capability check for constant cap */
+#define cpus_have_const_cap(num) ({                 \
+        bool __ret;                                 \
+                                                    \
+        asm volatile (ALTERNATIVE("mov %0, #0",     \
+                                  "mov %0, #1",     \
+                                  num)              \
+                      : "=r" (__ret));              \
+                                                    \
+        unlikely(__ret);                            \
+        })
+
 static inline void cpus_set_cap(unsigned int num)
 {
     if (num >= ARM_NCAPS)
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
[hidden email]
https://lists.xenproject.org/xen-changelog