diff --git a/executer/user/Makefile.in b/executer/user/Makefile.in index 3db6ad5b..40851ab9 100644 --- a/executer/user/Makefile.in +++ b/executer/user/Makefile.in @@ -42,8 +42,8 @@ ifeq ($(ARCH), arm64) eclair: eclair.c arch/$(ARCH)/arch-eclair.c $(CC) -I.. -I. -I./arch/$(ARCH)/include -I$(VPATH)/.. -I$(VPATH) -I$(VPATH)/arch/$(ARCH)/include $(CFLAGS) -o $@ $^ $(LIBS) -ldl -lz else -eclair: eclair.c - $(CC) $(CFLAGS) -I${IHKDIR} -o $@ $^ $(LIBS) +eclair: eclair.c arch/$(ARCH)/arch-eclair.c + $(CC) -I.. -I$(VPATH) -I$(VPATH)/arch/$(ARCH)/include $(CFLAGS) -o $@ $^ $(LIBS) endif ldump2mcdump.so: ldump2mcdump.c diff --git a/executer/user/arch/x86_64/include/arch-eclair.h b/executer/user/arch/x86_64/include/arch-eclair.h index a76053f3..99350247 100644 --- a/executer/user/arch/x86_64/include/arch-eclair.h +++ b/executer/user/arch/x86_64/include/arch-eclair.h @@ -2,8 +2,18 @@ #ifndef HEADER_USER_X86_ECLAIR_H #define HEADER_USER_X86_ECLAIR_H -#define MAP_KERNEL 0xFFFFFFFF80000000 -#define MAP_ST 0xFFFF800000000000 +#ifndef POSTK_DEBUG_ARCH_DEP_34 +#define MAP_ST_START 0xffff800000000000UL +#define MAP_VMAP_START 0xffff850000000000UL +#define MAP_FIXED_START 0xffff860000000000UL +#define LINUX_PAGE_OFFSET 0xffff880000000000UL +#define MAP_KERNEL_START 0xFFFFFFFFFE800000UL +#endif /* POSTK_DEBUG_ARCH_DEP_34 */ + +/* TODO: these should be updated when McKernel changes */ +#define MCKERNEL_ELF_START "0xFFFFFFFFFE801000" +#define MCKERNEL_ELF_LEN "0x0000000000100000" + #define ARCH_CLV_SPAN "x86_cpu_local_variables_span" diff --git a/executer/user/eclair.c b/executer/user/eclair.c index dc758789..603f4838 100644 --- a/executer/user/eclair.c +++ b/executer/user/eclair.c @@ -8,9 +8,7 @@ * Copyright (C) 2015 RIKEN AICS */ -#ifdef POSTK_DEBUG_ARCH_DEP_33 #include "../config.h" -#endif /* POSTK_DEBUG_ARCH_DEP_33 */ #include #include #include @@ -22,10 +20,8 @@ #include #include #include -#ifdef POSTK_DEBUG_ARCH_DEP_34 #include #include -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ #define CPU_TID_BASE 1000000 @@ -85,11 +81,7 @@ static struct thread_info *curr_thread = NULL; static uintptr_t ihk_mc_switch_context = -1; #endif /* POSTK_DEBUG_ARCH_DEP_34 */ -#ifdef POSTK_DEBUG_ARCH_DEP_34 uintptr_t lookup_symbol(char *name) { -#else /* POSTK_DEBUG_ARCH_DEP_34 */ -static uintptr_t lookup_symbol(char *name) { -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ int i; for (i = 0; i < nsyms; ++i) { @@ -101,22 +93,22 @@ static uintptr_t lookup_symbol(char *name) { return NOSYMBOL; } /* lookup_symbol() */ +#define NOPHYS ((uintptr_t)-1) static uintptr_t virt_to_phys(uintptr_t va) { -#ifndef POSTK_DEBUG_ARCH_DEP_34 -#define MAP_KERNEL 0xFFFFFFFF80000000 -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ - if (va >= MAP_KERNEL) { - return (va - MAP_KERNEL + kernel_base); + if (va >= MAP_KERNEL_START) { + return va - MAP_KERNEL_START + kernel_base; } -#ifndef POSTK_DEBUG_ARCH_DEP_34 -#define MAP_ST 0xFFFF800000000000 -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ - if (va >= MAP_ST) { - return (va - MAP_ST); + else if (va >= LINUX_PAGE_OFFSET) { + return va - LINUX_PAGE_OFFSET; } - if (0) printf("virt_to_phys(%lx): -1\n", va); -#define NOPHYS ((uintptr_t)-1) + else if (va >= MAP_FIXED_START) { + return va - MAP_FIXED_START; + } + else if (va >= MAP_ST_START) { + return va - MAP_ST_START; + } + return NOPHYS; } /* virt_to_phys() */ @@ -673,11 +665,7 @@ static int setup_dump(char *fname) { return 0; } /* setup_dump() */ -#ifdef POSTK_DEBUG_ARCH_DEP_38 static ssize_t print_hex(char *buf, size_t buf_size, char *str) { -#else /* POSTK_DEBUG_ARCH_DEP_38 */ -static ssize_t print_hex(char *buf, char *str) { -#endif /* POSTK_DEBUG_ARCH_DEP_38 */ char *p; char *q; @@ -702,11 +690,7 @@ static ssize_t print_hex(char *buf, char *str) { return (q - buf); } /* print_hex() */ -#if defined(POSTK_DEBUG_ARCH_DEP_34) && defined(POSTK_DEBUG_ARCH_DEP_38) ssize_t print_bin(char *buf, size_t buf_size, void *data, size_t size) { -#else /* POSTK_DEBUG_ARCH_DEP_34 && POSTK_DEBUG_ARCH_DEP_38*/ -static ssize_t print_bin(char *buf, void *data, size_t size) { -#endif /* POSTK_DEBUG_ARCH_DEP_34 && POSTK_DEBUG_ARCH_DEP_38*/ uint8_t *p; char *q; int i; @@ -733,13 +717,8 @@ static ssize_t print_bin(char *buf, void *data, size_t size) { return (q - buf); } /* print_bin() */ -#ifdef POSTK_DEBUG_ARCH_DEP_38 static void command(const char *cmd, char *res, size_t res_size) { const char *p; -#else /* POSTK_DEBUG_ARCH_DEP_38 */ -static void command(char *cmd, char *res) { - char *p; -#endif /* POSTK_DEBUG_ARCH_DEP_38 */ char *rbp; p = cmd; @@ -801,11 +780,7 @@ static void command(char *cmd, char *res) { #endif /* POSTK_DEBUG_ARCH_DEP_34 */ rbp += sprintf(rbp, "l"); if (0) -#ifdef POSTK_DEBUG_ARCH_DEP_38 rbp += print_hex(rbp, res_size, str); -#else /* POSTK_DEBUG_ARCH_DEP_38 */ - rbp += print_hex(rbp, str); -#endif /* POSTK_DEBUG_ARCH_DEP_38 */ rbp += sprintf(rbp, "%s", str); } else if (!strcmp(p, "D")) { @@ -814,20 +789,9 @@ static void command(char *cmd, char *res) { } else if (!strcmp(p, "g")) { if (curr_thread->cpu < 0) { -#ifndef POSTK_DEBUG_ARCH_DEP_34 - struct x86_kregs { - uintptr_t rsp, rbp, rbx, rsi; - uintptr_t rdi, r12, r13, r14; - uintptr_t r15, rflags, rsp0; - }; -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ int error; -#ifdef POSTK_DEBUG_ARCH_DEP_34 struct arch_kregs kregs; -#else /* POSTK_DEBUG_ARCH_DEP_34 */ - struct x86_kregs kregs; -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ error = read_mem(curr_thread->process+K(CTX_OFFSET), &kregs, sizeof(kregs)); @@ -836,36 +800,7 @@ static void command(char *cmd, char *res) { break; } -#ifdef POSTK_DEBUG_ARCH_DEP_34 print_kregs(rbp, res_size, &kregs); -#else /* POSTK_DEBUG_ARCH_DEP_34 */ - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* rax */ - rbp += print_bin(rbp, &kregs.rbx, sizeof(uint64_t)); - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* rcx */ - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* rdx */ - rbp += print_bin(rbp, &kregs.rsi, sizeof(uint64_t)); - rbp += print_bin(rbp, &kregs.rdi, sizeof(uint64_t)); - rbp += print_bin(rbp, &kregs.rbp, sizeof(uint64_t)); - rbp += print_bin(rbp, &kregs.rsp, sizeof(uint64_t)); - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* r8 */ - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* r9 */ - - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* r10 */ - rbp += sprintf(rbp, "xxxxxxxxxxxxxxxx"); /* r11 */ - rbp += print_bin(rbp, &kregs.r12, sizeof(uint64_t)); - rbp += print_bin(rbp, &kregs.r13, sizeof(uint64_t)); - rbp += print_bin(rbp, &kregs.r14, sizeof(uint64_t)); - rbp += print_bin(rbp, &kregs.r15, sizeof(uint64_t)); - rbp += print_bin(rbp, &ihk_mc_switch_context, - sizeof(uint64_t)); /* rip */ - rbp += print_bin(rbp, &kregs.rflags, sizeof(uint32_t)); - rbp += sprintf(rbp, "xxxxxxxx"); /* cs */ - rbp += sprintf(rbp, "xxxxxxxx"); /* ss */ - rbp += sprintf(rbp, "xxxxxxxx"); /* ds */ - rbp += sprintf(rbp, "xxxxxxxx"); /* es */ - rbp += sprintf(rbp, "xxxxxxxx"); /* fs */ - rbp += sprintf(rbp, "xxxxxxxx"); /* gs */ -#endif /* POSTK_DEBUG_ARCH_DEP_34 */ } else { int error; @@ -943,11 +878,7 @@ static void command(char *cmd, char *res) { #endif /* POSTK_DEBUG_ARCH_DEP_34 */ rbp += sprintf(rbp, "l"); if (0) -#ifdef POSTK_DEBUG_ARCH_DEP_38 rbp += print_hex(rbp, res_size, str); -#else /* POSTK_DEBUG_ARCH_DEP_38 */ - rbp += print_hex(rbp, str); -#endif /* POSTK_DEBUG_ARCH_DEP_38 */ rbp += sprintf(rbp, "%s", str); } else if (!strncmp(p, "T", 1)) { @@ -1039,11 +970,7 @@ static void command(char *cmd, char *res) { else { q += sprintf(q, "status=%#x", ti->status); } -#ifdef POSTK_DEBUG_ARCH_DEP_38 rbp += print_hex(rbp, res_size, buf); -#else /* POSTK_DEBUG_ARCH_DEP_38 */ - rbp += print_hex(rbp, buf); -#endif /* POSTK_DEBUG_ARCH_DEP_38 */ } } while (0); @@ -1272,11 +1199,7 @@ int main(int argc, char *argv[]) { } mode = 0; fputc('+', ofp); -#ifdef POSTK_DEBUG_ARCH_DEP_38 command(lbuf, rbuf, sizeof(rbuf)); -#else /* POSTK_DEBUG_ARCH_DEP_38 */ - command(lbuf, rbuf); -#endif /* POSTK_DEBUG_ARCH_DEP_38 */ sum = 0; for (p = rbuf; *p != '\0'; ++p) { sum += *p; diff --git a/executer/user/eclair.h b/executer/user/eclair.h index a80c6c0f..e0e81669 100644 --- a/executer/user/eclair.h +++ b/executer/user/eclair.h @@ -3,11 +3,7 @@ #ifndef HEADER_USER_COMMON_ECLAIR_H #define HEADER_USER_COMMON_ECLAIR_H -#ifdef POSTK_DEBUG_ARCH_DEP_76 /* header path fix */ #include "../config.h" -#else /* POSTK_DEBUG_ARCH_DEP_76 */ -#include -#endif /* POSTK_DEBUG_ARCH_DEP_76 */ #include #include #include