bsp/riscv: Store/AMO address misaligned trap occured
Sebastian Huber
sebastian.huber at embedded-brains.de
Fri Nov 4 13:03:01 UTC 2022
On 04/11/2022 10:49, Sebastian Huber wrote:
> On 04/11/2022 10:44, Padmarao.Begari at microchip.com wrote:
>> Hi Sebastian,
>>
>>> On Fri, 2022-11-04 at 08:07 +0100, Sebastian Huber wrote:
>>>
>>> On 03/11/2022 06:40,Padmarao.Begari at microchip.com wrote:
>>>>> On Wed, 2022-11-02 at 09:58 -0600, Gedare Bloom wrote:
>>>>>
>>>>> t0 contains the address of .Lsecondary_processor_go
>>>>>
>>>>> start.S has:
>>>>> ```asm
>>>>> #if __riscv_xlen == 32
>>>>> .align 2
>>>>> #elif __riscv_xlen == 64
>>>>> .align 3
>>>>> #endif
>>>>>
>>>>> .Lsecondary_processor_go:
>>>>> ```
>>>>> Can you confirm the value of __riscv_xlen is properly defined to
>>>>> 64
>>>>> for the PolarFire?
>>>>>
>>>> No, the value of __riscv_xlen is showing 32(config.log) instead of
>>>> 64
>>>> for PolarFire SoC and other 64-bit RISCV BSPs.
>>> This is a compiler built-in define. It doesn't matter what is in the
>>> config.log. What matters is that the compiler is invoked with the
>>> right
>>> options. In my build this looks all right.
>>>
>>> What is the value of t0 in
>>>
>>> amoswap.w zero, zero, 0(t0)
>>>
>>> ?
>>>
>> The "t0" value is 0x10000000ae
>
> Ok, is this the address of .Lsecondary_processor_go?
>
> It is a value > 4GiB. I am not sure how such a value is loaded through
> la or lla.
It seems that the .align directive is broken in the assembler. I checked
in b4ffaa7cdcce4fedb857f6b8342301f8dde65c78 as a workaround. Could you
please test this commit?
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
More information about the devel
mailing list