2019-06-10 21:21:49

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 15/15] riscv: add binfmt_flat support

Use the generic support with arguments are on the stack. Same as arm
and m68k.

Signed-off-by: Christoph Hellwig <[email protected]>
---
arch/riscv/Kconfig | 2 ++
arch/riscv/include/asm/Kbuild | 1 +
2 files changed, 3 insertions(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 0c4b12205632..2e3b60cdeef4 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -17,7 +17,9 @@ config RISCV
select OF
select OF_EARLY_FLATTREE
select OF_IRQ
+ select ARCH_HAS_BINFMT_FLAT
select ARCH_WANT_FRAME_POINTERS
+ select BINFMT_FLAT_ARGVP_ENVP_ON_STACK
select CLONE_BACKWARDS
select COMMON_CLK
select GENERIC_CLOCKEVENTS
diff --git a/arch/riscv/include/asm/Kbuild b/arch/riscv/include/asm/Kbuild
index 5ee646619cc3..1efaeddf1e4b 100644
--- a/arch/riscv/include/asm/Kbuild
+++ b/arch/riscv/include/asm/Kbuild
@@ -5,6 +5,7 @@ generic-y += compat.h
generic-y += device.h
generic-y += div64.h
generic-y += extable.h
+generic-y += flat.h
generic-y += dma.h
generic-y += dma-contiguous.h
generic-y += dma-mapping.h
--
2.20.1


2019-06-11 08:17:52

by Vladimir Murzin

[permalink] [raw]
Subject: Re: [PATCH 15/15] riscv: add binfmt_flat support

On 6/10/19 10:20 PM, Christoph Hellwig wrote:
> Use the generic support with arguments are on the stack. Same as arm
> and m68k.

Out of curiosity, what is reason for keeping arguments on the stack?

ARM port of uClibc has following comment around manipulating of argv/argc:

/*
* uClinux/arm stacks look a little different from normal
* MMU-full Linux/arm stacks (for no good reason)
*/

So I though it is kind of legacy.

Thanks
Vladimir

>
> Signed-off-by: Christoph Hellwig <[email protected]>
> ---
> arch/riscv/Kconfig | 2 ++
> arch/riscv/include/asm/Kbuild | 1 +
> 2 files changed, 3 insertions(+)
>
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 0c4b12205632..2e3b60cdeef4 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -17,7 +17,9 @@ config RISCV
> select OF
> select OF_EARLY_FLATTREE
> select OF_IRQ
> + select ARCH_HAS_BINFMT_FLAT
> select ARCH_WANT_FRAME_POINTERS
> + select BINFMT_FLAT_ARGVP_ENVP_ON_STACK
> select CLONE_BACKWARDS
> select COMMON_CLK
> select GENERIC_CLOCKEVENTS
> diff --git a/arch/riscv/include/asm/Kbuild b/arch/riscv/include/asm/Kbuild
> index 5ee646619cc3..1efaeddf1e4b 100644
> --- a/arch/riscv/include/asm/Kbuild
> +++ b/arch/riscv/include/asm/Kbuild
> @@ -5,6 +5,7 @@ generic-y += compat.h
> generic-y += device.h
> generic-y += div64.h
> generic-y += extable.h
> +generic-y += flat.h
> generic-y += dma.h
> generic-y += dma-contiguous.h
> generic-y += dma-mapping.h
>

2019-06-11 09:47:41

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH 15/15] riscv: add binfmt_flat support

On Tue, Jun 11, 2019 at 09:16:43AM +0100, Vladimir Murzin wrote:
> On 6/10/19 10:20 PM, Christoph Hellwig wrote:
> > Use the generic support with arguments are on the stack. Same as arm
> > and m68k.
>
> Out of curiosity, what is reason for keeping arguments on the stack?
>
> ARM port of uClibc has following comment around manipulating of argv/argc:
>
> /*
> * uClinux/arm stacks look a little different from normal
> * MMU-full Linux/arm stacks (for no good reason)
> */
>
> So I though it is kind of legacy.

I just copied m68k and arm. But dropping this makes the uclinux
crt1 code simpler, so I'll drop the flag for the next version.