diff mbox series

[v2] riscv: Set text_offset correctly for M-Mode

Message ID 20201022203012.428607-1-seanga2@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v2] riscv: Set text_offset correctly for M-Mode | expand

Commit Message

Sean Anderson Oct. 22, 2020, 8:30 p.m. UTC
M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this
should be calculated based on PAGE_OFFSET somehow? Even better would be to
deprecate text_offset and instead introduce something absolute.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
---

Changes in v2:
- RISCV_S_MODE does not exist; use RISCV_M_MODE instead

 arch/riscv/kernel/head.S | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Damien Le Moal Oct. 22, 2020, 11:55 p.m. UTC | #1
On 2020/10/23 5:30, Sean Anderson wrote:
> M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this
> should be calculated based on PAGE_OFFSET somehow? Even better would be to
> deprecate text_offset and instead introduce something absolute.
> 
> Signed-off-by: Sean Anderson <seanga2@gmail.com>
> ---
> 
> Changes in v2:
> - RISCV_S_MODE does not exist; use RISCV_M_MODE instead
> 
>  arch/riscv/kernel/head.S | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
> index 0a4e81b8dc79..5a0ae2eaf5e2 100644
> --- a/arch/riscv/kernel/head.S
> +++ b/arch/riscv/kernel/head.S
> @@ -27,12 +27,17 @@ ENTRY(_start)
>  	/* reserved */
>  	.word 0
>  	.balign 8
> +#ifdef CONFIG_RISCV_M_MODE
> +	/* Image load offset (0MB) from start of RAM for M-mode */
> +	.dword 0
> +#else
>  #if __riscv_xlen == 64
>  	/* Image load offset(2MB) from start of RAM */
>  	.dword 0x200000
>  #else
>  	/* Image load offset(4MB) from start of RAM */
>  	.dword 0x400000
>  #endif
> +#endif
>  	/* Effective size of kernel image */
>  	.dword _end - _start
> 

Looks good to me. Added this to my upcoming pile of patches for Kendryte and
tested. No problems.

Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Tested-by: Damien Le Moal <damien.lemoal@wdc.com>
Palmer Dabbelt Nov. 6, 2020, 1:43 a.m. UTC | #2
On Thu, 22 Oct 2020 16:55:33 PDT (-0700), Damien Le Moal wrote:
>> On 2020/10/23 5:30, Sean Anderson wrote:
>> M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this
>> should be calculated based on PAGE_OFFSET somehow? Even better would be to
>> deprecate text_offset and instead introduce something absolute.
>> 
>> Signed-off-by: Sean Anderson <seanga2@gmail.com>
>> ---
>> 
>> Changes in v2:
>> - RISCV_S_MODE does not exist; use RISCV_M_MODE instead
>> 
>>  arch/riscv/kernel/head.S | 5 +++++
>>  1 file changed, 5 insertions(+)
>> 
>> diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
>> index 0a4e81b8dc79..5a0ae2eaf5e2 100644
>> --- a/arch/riscv/kernel/head.S
>> +++ b/arch/riscv/kernel/head.S
>> @@ -27,12 +27,17 @@ ENTRY(_start)
>>  	/* reserved */
>>  	.word 0
>>  	.balign 8
>> +#ifdef CONFIG_RISCV_M_MODE
>> +	/* Image load offset (0MB) from start of RAM for M-mode */
>> +	.dword 0
>> +#else
>>  #if __riscv_xlen == 64
>>  	/* Image load offset(2MB) from start of RAM */
>>  	.dword 0x200000
>>  #else
>>  	/* Image load offset(4MB) from start of RAM */
>>  	.dword 0x400000
>>  #endif
>> +#endif
>>  	/* Effective size of kernel image */
>>  	.dword _end - _start
>> 
>
> Looks good to me. Added this to my upcoming pile of patches for Kendryte and
> tested. No problems.
> 
> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
> Tested-by: Damien Le Moal <damien.lemoal@wdc.com>

Thanks.  This is on fixes.
diff mbox series

Patch

diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
index 0a4e81b8dc79..5a0ae2eaf5e2 100644
--- a/arch/riscv/kernel/head.S
+++ b/arch/riscv/kernel/head.S
@@ -27,12 +27,17 @@  ENTRY(_start)
 	/* reserved */
 	.word 0
 	.balign 8
+#ifdef CONFIG_RISCV_M_MODE
+	/* Image load offset (0MB) from start of RAM for M-mode */
+	.dword 0
+#else
 #if __riscv_xlen == 64
 	/* Image load offset(2MB) from start of RAM */
 	.dword 0x200000
 #else
 	/* Image load offset(4MB) from start of RAM */
 	.dword 0x400000
 #endif
+#endif
 	/* Effective size of kernel image */
 	.dword _end - _start