Give arm/arm64 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> --- arm/run | 1 + lib/arm/setup.c | 8 ++++++++ arm/cstart.S | 1 + arm/cstart64.S | 1 + 4 files changed, 11 insertions(+) diff --git a/arm/run b/arm/run index 1c40ab02eb57..2134c9efb1bd 100755 --- a/arm/run +++ b/arm/run @@ -79,6 +79,7 @@ fi M+=",accel=$ACCEL" command="$qemu -nodefaults $M -cpu $processor $chr_testdev $pci_testdev" +[ -f "$ENV" ] && command+=" -initrd $ENV" command+=" -display none -serial stdio -kernel" command="$(timeout_cmd) $command" echo $command "$@" diff --git a/lib/arm/setup.c b/lib/arm/setup.c index c4d69ae2c143..689c211d3018 100644 --- a/lib/arm/setup.c +++ b/lib/arm/setup.c @@ -23,6 +23,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; @@ -173,4 +174,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/arm/cstart.S b/arm/cstart.S index 9822fb7ba637..12461d104dad 100644 --- a/arm/cstart.S +++ b/arm/cstart.S @@ -62,6 +62,7 @@ start: ldr r0, =__argc ldr r0, [r0] ldr r1, =__argv + ldr r2, =__environ bl main bl exit b halt diff --git a/arm/cstart64.S b/arm/cstart64.S index 44cff32d0f18..7738babc4109 100644 --- a/arm/cstart64.S +++ b/arm/cstart64.S @@ -43,6 +43,7 @@ start: adr x0, __argc ldr x0, [x0] adr x1, __argv + adr x2, __environ 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