mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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@arm.com> Acked-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
1 parent
aa1ae74cb5
commit
3e883d8b7a
4 files changed
+11
-6
No files matched your search
@@ -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 {
|
||||
|
||||
@@ -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) )
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||