[U-Boot] [PATCH 08/30] riscv: add Kconfig entries for the code model

Bin Meng bmeng.cn at gmail.com
Mon Oct 22 07:21:57 UTC 2018


Hi Lukas,

On Sat, Oct 20, 2018 at 6:10 AM Lukas Auer
<lukas.auer at aisec.fraunhofer.de> wrote:
>
> RISC-V has two code models, medium low (medlow) and medium any (medany).
> Medlow limits addressable memory to a single 2 GiB range between the
> absolute addresses -2 GiB and +2 GiB. Medany limits addressable memory
> to any single 2 GiB address range.
> By default, medlow is selected on 32-bit systems and medany on 64-bit
> systems. This matches the configuration in Linux.
>
> The -mcmodel compiler flag is selected according to the Kconfig
> configuration.
>
> Signed-off-by: Lukas Auer <lukas.auer at aisec.fraunhofer.de>
> ---
>
>  arch/riscv/Kconfig  | 19 +++++++++++++++++++
>  arch/riscv/Makefile |  7 +++++--
>  2 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index e15329c35e..ce07fb4b55 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -38,6 +38,25 @@ config ARCH_RV64I
>
>  endchoice
>
> +choice
> +       prompt "Code Model"
> +       default CMODEL_MEDLOW if 32BIT
> +       default CMODEL_MEDANY if 64BIT
> +
> +config CMODEL_MEDLOW
> +       bool "medium low code model"
> +       help
> +         U-Boot and its statically defined symbols must lie within a single 2 GiB
> +         address range and must lie between absolute addresses -2 GiB and +2 GiB.
> +
> +config CMODEL_MEDANY
> +       bool "medium any code model"
> +       help
> +         U-Boot and its statically defined symbols must be within any single 2 GiB
> +         address range.
> +
> +endchoice
> +
>  config RISCV_ISA_C
>         bool "Emit compressed instructions"
>         default y
> diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
> index 6fb292d0b4..da6e50bd14 100644
> --- a/arch/riscv/Makefile
> +++ b/arch/riscv/Makefile
> @@ -13,8 +13,11 @@ riscv-mabi-$(CONFIG_ARCH_RV32I)      := ilp32
>
>  arch-y := -march=$(riscv-march-y) -mabi=$(riscv-mabi-y)
>
> -PLATFORM_CPPFLAGS      += $(arch-y)
> -CFLAGS_EFI             += $(arch-y)
> +cmodel-$(CONFIG_CMODEL_MEDLOW) := -mcmodel=medlow
> +cmodel-$(CONFIG_CMODEL_MEDANY) := -mcmodel=medany
> +
> +PLATFORM_CPPFLAGS      += $(arch-y) $(cmodel-y)
> +CFLAGS_EFI             += $(arch-y) $(cmodel-y)
>
>  head-y := arch/riscv/cpu/start.o

See my comments for patch [07/30]. We can do similar thing to the code model.

Regards,
Bin


More information about the U-Boot mailing list