Thiemo Seufer wrote: > Marc St-Jean wrote: > > > > > > Thiemo Seufer wrote: > > > Marc St-Jean wrote: > > > [snip] > > > > > > +#ifdef CONFIG_PMC_MSP > > > > > > + jal kernel_entry > > > > > > +#else > > > > > > Maybe introduce a CONFIG_BOOT_RAW (and use it in arch/mips/Makefile > > > to objcopy the kernel to a raw binary). Thanks, I'll introduce this config option to add the above 'jal kernel_entry'. Our build system already takes care of doing the objcopy as well as combining a rootfs, etc. so I'd rather not change the makefile if you have no objections. > > > > > > + /* > > > > > > * Reserved space for exception handlers. > > > > > > * Necessary for machines which link their kernels at > KSEG0. > > > > > > */ > > > > > > .fill 0x400 > > > > > > +#endif /* CONFIG_PMC_MSP */ > > > > > > > > > > This is getting kind of ugly. There are a whole lot of config > choices > > > > > that need to use the 'j kernel_entry'. Do they all have to > have their > > > > > own? I'm not sure what the best way is to handle them all. > > > > > > > > I agree but don't know the best way to handle this. I could > introduce a > > > > SYS_NO_EXEPT_FILL or similar flag but this seems excessive. > > > > > > > > Any other ideas from arch/mips folks? > > > > > > Something like > > > > > > #if LOADADDR == 0xffffffff80000000 > > > .fill 0x400 > > > #endif > > > > > > but by defining an appropriate name in arch/mips/Makefile instead of > > > externalizing the load-y/LOADADDR there. > > > > Thanks for the suggestions Thiemo. > > > > We only need one of these solutions and I think the second one is > cleaner. > > You need both as they solve two independent problems. One is rerouting > the kernel entry, the other saves some space in the image. I thought without the .fill that the kernel_entry function would be at the start of text. Apparently not, a quick test shows a crash with both the jal and .fill removed. > > I do have a few questions before respinning the patch: > > > > 1. Why do you want to create another name, wouldn't there be less > confusion > > and chance for errors by reusing LOADADDR and ensuring it's the same > as what > > the linker script uses? > > LOADADDR is a short and thus bad name for a global symbol. > > > 2. Looking at arch/mips/Makefile there are many boards not using > > 0xffffffff80000000. If we introduce this check it seems that all of > these > > boards will have their _stext changed and it'll affect their "jump" > address > > from monitor/boot scripts? > > For targets with a raw binary kernel the assumption is that their > firmware jumps to the start of the image. The .fill translates to nops. > > Targets which don't use 0x80000000 as load address don't need to > reserve space at the start for exception handlers. Thanks for clarifying, Marc