Export offsets that we will later need in assembly.

Signed-off-by: Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de>
---
 hypervisor/arch/riscv/asm-defines.c        | 27 ++++++++++++++++++++++
 hypervisor/include/jailhouse/gen-defines.h |  8 ++++++-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/hypervisor/arch/riscv/asm-defines.c 
b/hypervisor/arch/riscv/asm-defines.c
index 17c2f256..0143d5c9 100644
--- a/hypervisor/arch/riscv/asm-defines.c
+++ b/hypervisor/arch/riscv/asm-defines.c
@@ -11,9 +11,36 @@
  */
 
 #include <jailhouse/gen-defines.h>
+#include <jailhouse/percpu.h>
 
 void common(void);
 
 void common(void)
 {
+       OFFSETU(REG_SP, registers, sp);
+       OFFSETU(REG_RA, registers, ra);
+       OFFSETU(REG_T0, registers, t0);
+       OFFSETU(REG_TP, registers, tp);
+       OFFSETU(REG_GP, registers, gp);
+       OFFSETU(REG_S0, registers, s0);
+       OFFSETU(REG_S1, registers, s1);
+       OFFSETU(REG_S2, registers, s2);
+       OFFSETU(REG_S3, registers, s3);
+       OFFSETU(REG_S4, registers, s4);
+       OFFSETU(REG_S5, registers, s5);
+       OFFSETU(REG_S6, registers, s6);
+       OFFSETU(REG_S7, registers, s7);
+       OFFSETU(REG_S8, registers, s8);
+       OFFSETU(REG_S9, registers, s9);
+       OFFSETU(REG_S10, registers, s10);
+       OFFSETU(REG_S11, registers, s11);
+
+       OFFSET(HEADER_MAX_CPUS, jailhouse_header, max_cpus);
+       OFFSET(HEADER_PERCPU_SIZE, jailhouse_header, percpu_size);
+
+       OFFSET(CFG_PHYS_START, jailhouse_system, hypervisor_memory.phys_start);
+
+       OFFSET(PCPU_GUEST_REGS, per_cpu, guest_regs);
+
+       DEFINE(REGISTERS_SIZE, sizeof(union registers));
 }
diff --git a/hypervisor/include/jailhouse/gen-defines.h 
b/hypervisor/include/jailhouse/gen-defines.h
index d42fe255..7b348761 100644
--- a/hypervisor/include/jailhouse/gen-defines.h
+++ b/hypervisor/include/jailhouse/gen-defines.h
@@ -22,8 +22,14 @@
 
 #define BLANK() asm volatile("\n=>" : : )
 
+#define OFF(type, sym, str, mem) \
+       DEFINE(sym, __builtin_offsetof(type str, mem))
+
 #define OFFSET(sym, str, mem) \
-       DEFINE(sym, __builtin_offsetof(struct str, mem))
+       OFF(struct, sym, str, mem)
+
+#define OFFSETU(sym, str, mem) \
+       OFF(union , sym, str, mem)
 
 #define COMMENT(x) \
        asm volatile("\n=>#" x)
-- 
2.36.1

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jailhouse-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/20220627132905.4338-18-ralf.ramsauer%40oth-regensburg.de.

Reply via email to