Re: [PATCH 8/9] arm: initial drop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 16, 2013 at 06:06:35PM -0700, Christoffer Dall wrote:
> > diff --git a/arm/boot.c b/arm/boot.c
> > new file mode 100644
> > index 0000000000000..375e8708a7c54
> 
> this file's indentation is also funny, you should really check your
> editor configuration :)

Actually the editor prefers kernel style, I had to keep trying to
force the other style on it, and now see below that I wasn't always
successful. '++expected' should have had just a tab, not a
tab+4spaces...

> > --- /dev/null
> > +++ b/arm/boot.c
> > @@ -0,0 +1,27 @@
> > +#include "libcflat.h"
> > +#include "arm/bootinfo.h"
> > +
> > +static bool info_check(u32 var, char *expected)
> > +{
> > +    char var_str[9];
> > +    snprintf(var_str, 9, "%x", var);
> > +    while (*expected == '0' || *expected == 'x')
> > +	    ++expected;
> > +    return !strcmp(var_str, expected);
> > +}
> > +
> > +int main(int argc, char **argv)
> > +{
> > +    int ret = 0;
> > +
> > +    if (argc < 3) {
> > +	printf("Not enough arguments. Can't test\n");
> > +	return 1;
> > +    }
> > +
> > +    if (!strcmp(argv[0], "info"))
> > +	ret = !info_check(mem32.size, argv[1])
> > +		|| !info_check(core.pagesize, argv[2]);
> > +
> > +    return ret;
> > +}
> 
> I'm actually a little confused, when does this main get invoked and by
> whom and what are we testing for here?

See cstart.S:start 'bl main' below for the who invokes. And
arm/unittests.cfg, also below, for the (poorly documented) test case
definition. You'll see we config the test to have 256G memory, and then
here we confirm that we read the bootinfo correctly, i.e. it says 256G.
There's also a check for pagesize, which isn't really necessary, but as
that info comes from a different ATAG, it (sort of) checks something
else.

> 
> > diff --git a/arm/cstart.S b/arm/cstart.S
> > new file mode 100644
> > index 0000000000000..a65809824d4f1
> > --- /dev/null
> > +++ b/arm/cstart.S
> > @@ -0,0 +1,47 @@
> > +
> > +#define CR_B	(1 << 7)
> > +
> > +.arm
> > +
> > +.section .init
> > +
> > +.globl start
> > +start:
> > +	/* bootloader params are in r0-r2 */
> > +	ldr	sp, =stacktop
> > +	push	{ r0-r3 }		@push r3 too for 8-byte alignment
> > +
> > +	mrc	p15, 0, r8, c1, c0, 0	@r8 = sctrl
> > +	bl	get_endianness
> > +	bl	io_init
> > +
> > +	pop	{ r0-r3 }
> > +	bl	read_bootinfo
> > +	bl	__setup_args
> > +	ldr	r0, =__argc
> > +	ldr	r0, [r0]
> > +	ldr	r1, =__argv
> > +	bl	main
> > +	bl	exit
> > +	b	halt
> > +
> > +get_endianness:
> > +	and	r0, r8, #CR_B
> > +	cmp	r0, #0
> > +	beq	1f
> > +	ldr	r1, =cpu_is_be
> > +	mov	r0, #1
> > +	str	r0, [r1]
> > +1:	mov	pc, lr
> > +
> > +.text
> > +
> > +.globl halt
> > +halt:
> > +1:	wfi
> > +	b	1b
> > +
> > +.data
> > +
> > +.globl cpu_is_be
> > +cpu_is_be:	.word 0

[snip]

> > diff --git a/arm/unittests.cfg b/arm/unittests.cfg
> > new file mode 100644
> > index 0000000000000..fb78cd906839a
> > --- /dev/null
> > +++ b/arm/unittests.cfg
> > @@ -0,0 +1,11 @@
> > +# Define your new unittest following the convention:
> > +# [unittest_name]
> > +# file = foo.flat # Name of the flat file to be used
> > +# smp = 2 # Number of processors the VM will use during this test
> > +# extra_params = -append <params...> # Additional parameters used
> > +# arch = arm/arm64 # Only if the test case works only on one of them
> > +# groups = group1 group2 # Used to identify test cases with run_tests -g ...
> > +
> > +[boot_info]
> > +file = boot.flat
> > +extra_params = -m 256 -append 'info 0x10000000 0x1000'
> > diff --git a/config/config-arm.mak b/config/config-arm.mak

[snip]

drew
--
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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux