Comments
Patch
@@ -26,8 +26,32 @@
* - V: value passed in register
*/
+#if __i386__ || __i486__ || __x86_64__
+
+#define __BACKDOOR_BASE asm volatile (".byte 0x0f, 0x04")
+#define __BACKDOOR_V(v) asm volatile ("movl %0, %%eax" : : "g"(v) : "%eax")
+
+#define BACKDOOR_i8(cmd) \
+ do { \
+ __BACKDOOR_BASE; \
+ __BACKDOOR_i8(0x00); \
+ __BACKDOOR_i8(cmd); \
+ } while (0)
+
+#define BACKDOOR_i8_V(cmd, value) \
+ do { \
+ __BACKDOOR_V(value); \
+ __BACKDOOR_BASE; \
+ __BACKDOOR_i8(0x01); \
+ __BACKDOOR_i8(cmd); \
+ } while (0)
+
+#else
+
#error Undefined instruction-based backdoor interface for guest architecture
+#endif
+
#define __str(s) #s
#define __xstr(s) __str(s)
Guest-side macros to generate backdoor instructions. Signed-off-by: LluĂs Vilanova <vilanova@ac.upc.edu> --- backdoor/guest.h | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0 deletions(-)