Give powerpc unit tests access to environment variables. The environment variables are passed to the unit test with '-initrd env-file'. Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx> --- powerpc/run | 1 + lib/powerpc/setup.c | 8 ++++++++ powerpc/cstart64.S | 5 +++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/powerpc/run b/powerpc/run index afdd487bfc35..6269abb9fe7f 100755 --- a/powerpc/run +++ b/powerpc/run @@ -44,6 +44,7 @@ fi M='-machine pseries' M+=",accel=$ACCEL" command="$qemu -nodefaults $M -bios $FIRMWARE" +[ -f "$ENV" ] && command+=" -initrd $ENV" command+=" -display none -serial stdio -kernel" command="$(timeout_cmd) $command" echo $command "$@" diff --git a/lib/powerpc/setup.c b/lib/powerpc/setup.c index f2dc10e01352..8d44311cac3b 100644 --- a/lib/powerpc/setup.c +++ b/lib/powerpc/setup.c @@ -21,6 +21,7 @@ extern unsigned long stacktop; extern void io_init(void); extern void setup_args_progname(const char *args); +extern void setup_env(char *env, int size); char *initrd; u32 initrd_size; @@ -211,4 +212,11 @@ void setup(const void *fdt) ret = dt_get_bootargs(&bootargs); assert(ret == 0 || ret == -FDT_ERR_NOTFOUND); setup_args_progname(bootargs); + + if (initrd) { + /* environ is currently the only file in the initrd */ + char *env = malloc(initrd_size); + memcpy(env, initrd, initrd_size); + setup_env(env, initrd_size); + } } diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S index 2d660325e854..2204e3bbe44e 100644 --- a/powerpc/cstart64.S +++ b/powerpc/cstart64.S @@ -94,9 +94,10 @@ start: bl setup /* run the test */ - LOAD_REG_ADDR(r5, __argc) + LOAD_REG_ADDR(r3, __argc) LOAD_REG_ADDR(r4, __argv) - lwz r3, 0(r5) + LOAD_REG_ADDR(r5, __environ) + lwz r3, 0(r3) bl main bl exit b halt -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html