Messages in this thread | | | Subject | Re: [PATCH v2] RISC-V: Always define XIP_FIXUP | From | Alex Ghiti <> | Date | Thu, 29 Apr 2021 09:43:05 -0400 |
| |
Le 4/28/21 à 5:45 PM, Palmer Dabbelt a écrit : > From: Palmer Dabbelt <palmerdabbelt@google.com> > > XIP depends on MMU, but XIP_FIXUP is used throughout the kernel in > order to avoid excessive ifdefs. This just makes sure to always define > XIP_FIXUP, which will fix MMU=n builds. XIP_OFFSET is used by assembly > but XIP_FIXUP is C-only, so they're split. > > Fixes: 44c922572952 ("RISC-V: enable XIP") > Reported-by: Guenter Roeck <linux@roeck-us.net> > Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com> > --- > Changes since v1: > > * Clean up the commit text. > * Define XIP_OFFSET for assembly. > --- > arch/riscv/include/asm/pgtable.h | 23 +++++++++++++---------- > 1 file changed, 13 insertions(+), 10 deletions(-) > > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h > index 2f1384e14e31..9469f464e71a 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -73,18 +73,10 @@ > #endif > #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) > > +#endif > + > #ifdef CONFIG_XIP_KERNEL > #define XIP_OFFSET SZ_8M > -#define XIP_FIXUP(addr) ({ \ > - uintptr_t __a = (uintptr_t)(addr); \ > - (__a >= CONFIG_XIP_PHYS_ADDR && __a < CONFIG_XIP_PHYS_ADDR + SZ_16M) ? \ > - __a - CONFIG_XIP_PHYS_ADDR + CONFIG_PHYS_RAM_BASE - XIP_OFFSET :\ > - __a; \ > - }) > -#else > -#define XIP_FIXUP(addr) (addr) > -#endif /* CONFIG_XIP_KERNEL */ > - > #endif > > #ifndef __ASSEMBLY__ > @@ -101,6 +93,17 @@ > #include <asm/pgtable-32.h> > #endif /* CONFIG_64BIT */ > > +#ifdef CONFIG_XIP_KERNEL > +#define XIP_FIXUP(addr) ({ \ > + uintptr_t __a = (uintptr_t)(addr); \ > + (__a >= CONFIG_XIP_PHYS_ADDR && __a < CONFIG_XIP_PHYS_ADDR + SZ_16M) ? \ > + __a - CONFIG_XIP_PHYS_ADDR + CONFIG_PHYS_RAM_BASE - XIP_OFFSET :\ > + __a; \ > + }) > +#else > +#define XIP_FIXUP(addr) (addr) > +#endif /* CONFIG_XIP_KERNEL */ > + > #ifdef CONFIG_MMU > /* Number of entries in the page global directory */ > #define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t)) >
XIP_KERNEL works now and !MMU compiles so you can add:
Tested-by: Alexandre Ghiti <alex@ghiti.fr>
Thanks!
| |