diff --git a/executer/user/arch/arm64/include/arch-eclair.h b/executer/user/arch/arm64/include/arch-eclair.h index 891aec54..5a8474fe 100644 --- a/executer/user/arch/arm64/include/arch-eclair.h +++ b/executer/user/arch/arm64/include/arch-eclair.h @@ -2,9 +2,6 @@ #ifndef HEADER_USER_ARM64_ECLAIR_H #define HEADER_USER_ARM64_ECLAIR_H -/* PHYS_OFFSET needs to be changed according to the environment. */ -#define PHYS_OFFSET 0x40000000 - #ifdef CONFIG_ARM64_64K_PAGES # # if (CONFIG_ARM64_VA_BITS == 42) diff --git a/executer/user/eclair.c b/executer/user/eclair.c index f7c752c8..831ccf44 100644 --- a/executer/user/eclair.c +++ b/executer/user/eclair.c @@ -60,6 +60,8 @@ struct thread_info { uintptr_t arch_clv; }; /* struct thread_info */ +/* Physical memory start addr (non-zero on ARM64) */ +unsigned long PHYS_OFFSET; /* Virtual address where McKernel is mapped to */ unsigned long MAP_KERNEL_START; @@ -605,6 +607,7 @@ static int setup_dump(char *fname) { } kernel_base = mem_chunks->kernel_base; + PHYS_OFFSET = mem_chunks->phys_start; for (i = 0; i < mem_info.nr_chunks; ++i) { memset(physmem_name,0,sizeof(physmem_name)); diff --git a/executer/user/eclair.h b/executer/user/eclair.h index 8f9f24b7..3072a3c2 100644 --- a/executer/user/eclair.h +++ b/executer/user/eclair.h @@ -8,6 +8,7 @@ #include #include +extern unsigned long PHYS_OFFSET; extern unsigned long MAP_KERNEL_START; /* common */ diff --git a/executer/user/ldump2mcdump.c b/executer/user/ldump2mcdump.c index ace7895f..703079db 100644 --- a/executer/user/ldump2mcdump.c +++ b/executer/user/ldump2mcdump.c @@ -50,6 +50,8 @@ struct dump_mem_chunk { typedef struct dump_mem_chunks_s { int nr_chunks; unsigned long kernel_base; + /* memstart_addr in aarch64 */ + unsigned long phys_start; struct dump_mem_chunk chunks[]; } dump_mem_chunks_t; diff --git a/ihk b/ihk index fdd513f4..b053576c 160000 --- a/ihk +++ b/ihk @@ -1 +1 @@ -Subproject commit fdd513f41ce783544576c9e349badc8fd6582ab4 +Subproject commit b053576c89b428e0e6a8f75412d85909a7259b27