|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/arm64: Expose the ALT_[ORIG|REPL]_PTR macros to header files.
commit 3e883d8b7ac22ce92120a78a82426bb62f6b9c15
Author: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
AuthorDate: Fri Aug 12 16:11:27 2016 -0400
Commit: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
CommitDate: Fri Sep 9 11:48:21 2016 -0400
x86/arm64: Expose the ALT_[ORIG|REPL]_PTR macros to header files.
That way common code can use the same macro to access
the most common attributes without much #ifdef.
Take advantage of it right away in the livepatch code.
Note: on ARM we use tabs to conform to the style of the file.
Acked-by: Julien Grall <julien.grall@xxxxxxx>
Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
xen/arch/arm/alternative.c | 4 ----
xen/common/livepatch.c | 4 ++--
xen/include/asm-arm/alternative.h | 5 +++++
xen/include/asm-x86/alternative.h | 4 ++++
4 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
index 7203bae..2168393 100644
--- a/xen/arch/arm/alternative.c
+++ b/xen/arch/arm/alternative.c
@@ -32,10 +32,6 @@
#include <asm/insn.h>
#include <asm/page.h>
-#define __ALT_PTR(a,f) (u32 *)((void *)&(a)->f + (a)->f)
-#define ALT_ORIG_PTR(a) __ALT_PTR(a, orig_offset)
-#define ALT_REPL_PTR(a) __ALT_PTR(a, alt_offset)
-
extern const struct alt_instr __alt_instructions[], __alt_instructions_end[];
struct alt_region {
diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index a6010eb..440e914 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -621,8 +621,8 @@ static int prepare_payload(struct payload *payload,
for ( a = start; a < end; a++ )
{
- const void *instr = &a->instr_offset + a->instr_offset;
- const void *replacement = &a->repl_offset + a->repl_offset;
+ const void *instr = ALT_ORIG_PTR(a);
+ const void *replacement = ALT_REPL_PTR(a);
if ( (instr < region->start && instr >= region->end) ||
(replacement < region->start && replacement >= region->end) )
diff --git a/xen/include/asm-arm/alternative.h
b/xen/include/asm-arm/alternative.h
index 4287bac..f25d3a7 100644
--- a/xen/include/asm-arm/alternative.h
+++ b/xen/include/asm-arm/alternative.h
@@ -21,6 +21,11 @@ struct alt_instr {
u8 alt_len; /* size of new instruction(s), <= orig_len */
};
+/* Xen: helpers used by common code. */
+#define __ALT_PTR(a,f) ((u32 *)((void *)&(a)->f + (a)->f))
+#define ALT_ORIG_PTR(a) __ALT_PTR(a, orig_offset)
+#define ALT_REPL_PTR(a) __ALT_PTR(a, alt_offset)
+
void __init apply_alternatives_all(void);
int apply_alternatives(void *start, size_t length);
diff --git a/xen/include/asm-x86/alternative.h
b/xen/include/asm-x86/alternative.h
index bce959f..63b0364 100644
--- a/xen/include/asm-x86/alternative.h
+++ b/xen/include/asm-x86/alternative.h
@@ -23,6 +23,10 @@ struct alt_instr {
u8 replacementlen; /* length of new instruction, <= instrlen */
};
+#define __ALT_PTR(a,f) ((u8 *)((void *)&(a)->f + (a)->f))
+#define ALT_ORIG_PTR(a) __ALT_PTR(a, instr_offset)
+#define ALT_REPL_PTR(a) __ALT_PTR(a, repl_offset)
+
/* Similar to apply_alternatives except it can be run with IRQs enabled. */
extern void apply_alternatives_nocheck(struct alt_instr *start,
struct alt_instr *end);
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |