A future patch will use these in hvmloader, which is freestanding, but
lacks the Xen code. The following changes fix the compilation errors.
* string.h => Remove memset() usages and bzero through assignments
* inttypes.h => Use stdint.h (it's what it should've been to begin with)
* errno.h => Use xen/errno.h instead
No functional change intended.
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
xen/lib/x86/cpuid.c | 12 ++++++------
xen/lib/x86/private.h | 8 +++++---
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c
index eb7698dc73..4a138c3a11 100644
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -5,8 +5,8 @@
static void zero_leaves(struct cpuid_leaf *l,
unsigned int first, unsigned int last)
{
- if ( first <= last )
- memset(&l[first], 0, sizeof(*l) * (last - first + 1));
+ for (l = &l[first]; first <= last; first++, l++ )
+ *l = (struct cpuid_leaf){};
}
unsigned int x86_cpuid_lookup_vendor(uint32_t ebx, uint32_t ecx, uint32_t edx)
@@ -244,7 +244,7 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
ARRAY_SIZE(p->basic.raw) - 1);
if ( p->basic.max_leaf < 4 )
- memset(p->cache.raw, 0, sizeof(p->cache.raw));
+ p->cache = (typeof(p->cache)){};
else
{
for ( i = 0; (i < ARRAY_SIZE(p->cache.raw) &&
@@ -255,13 +255,13 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
}
if ( p->basic.max_leaf < 7 )
- memset(p->feat.raw, 0, sizeof(p->feat.raw));
+ p->feat = (typeof(p->feat)){};
else
zero_leaves(p->feat.raw, p->feat.max_subleaf + 1,
ARRAY_SIZE(p->feat.raw) - 1);
if ( p->basic.max_leaf < 0xb )
- memset(p->topo.raw, 0, sizeof(p->topo.raw));
+ p->topo = (typeof(p->topo)){};
else
{
for ( i = 0; (i < ARRAY_SIZE(p->topo.raw) &&
@@ -272,7 +272,7 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
}
if ( p->basic.max_leaf < 0xd || !cpu_policy_xstates(p) )
- memset(p->xstate.raw, 0, sizeof(p->xstate.raw));
+ p->xstate = (typeof(p->xstate)){};
else
{
/* This logic will probably need adjusting when XCR0[63] gets used. */
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400..4b8cb97e64 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -17,12 +17,14 @@
#else
-#include <errno.h>
-#include <inttypes.h>
+#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
-#include <string.h>
+enum {
+#define XEN_ERRNO(ident, rc) ident = (rc),
+#include <xen/errno.h>
+};
#include <xen/asm/msr-index.h>
#include <xen/asm/x86-vendors.h>
--
2.34.1