qemu-arm
[Top][All Lists]
Advanced

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

Re: [Qemu-arm] [Qemu-devel] [PATCH v5 03/15] tests/tcg/aarch64: add syst


From: Alex Bennée
Subject: Re: [Qemu-arm] [Qemu-devel] [PATCH v5 03/15] tests/tcg/aarch64: add system boot.S
Date: Wed, 08 May 2019 18:45:22 +0100
User-agent: mu4e 1.3.1; emacs 26.1

Richard Henderson <address@hidden> writes:

> On 4/30/19 9:52 AM, Alex Bennée wrote:
>> +.error:
>> +    .string "Terminated by exception.\n"
>
> Put it in .rodata just because we can?
>
>> +        /* Page table setup (identity mapping).  */
>> +    adrp    x0, ttb
>> +    add     x0, x0, :lo12:ttb
>
> You are in control of the layout of the executable,
> and adr has a 1MB range.  Why use adrp+add?

Well I have to now as I've aligned .data with:

    /* align r/w section to next 2mb */
    . = ALIGN(1 << 21);

>
>> +        /* Create some (big) pages */
>> +    adr     x1, .                           /* phys address */
>> +    bic     x1, x1, #(1 << 30) - 1          /* 1GB block alignment */
>
> Do you really want 1GB pages?  You'll pretty much only be able to test valid
> memory operations with that.  Which is also true until there's something other
> than an exit for the exception vector... but ya know what I mean.

Not using it for testing but I'm trying to set-up a 2 stage translation
so we get:

  1gb->1gb+2mb = .text/.rodata
  1gb+2mb->1gb+4mb = .data/.bss

>
>> +        /* Setup some stack space and enter the test code.
>> +         * Assume everthing except the return value is garbage when we
>> +     * return, we won't need it.
>> +         */
>> +    adrp    x0, stack
>> +    add     x0, x0, :lo12:stack
>> +        mov      sp, x0
>
> You need a pointer to the end of the stack, not the beginning.
> Again, I think this could be just
>
>       adr     sp, stack_end
>
> Also, there's tab/space confusion all through this file.
> IMO, this is assembly, so it *should* be tabs.

I'm adding an entry to editorconfig and fixing up the damage.

>
>> @@ -0,0 +1,22 @@
>> +ENTRY(__start)
>> +
>> +SECTIONS
>> +{
>> +    /* virt machine, RAM starts at 1gb */
>> +    . = (1 << 30);
>> +    .text : {
>> +        *(.text)
>> +    }
>> +    .data : {
>> +        *(.data)
>> +    }
>> +    .rodata : {
>> +        *(.rodata)
>> +    }
>
> If you ever wanted to make this read-only, swap .rodata before .data, so that
> it's next to .text.

done.

>
>
> r~


--
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]