[Patch, microblaze]: Add a small Linux BSP
Craig Howland
howland@LGSInnovations.com
Tue Jul 23 14:48:00 GMT 2013
On 07/23/2013 02:25 AM, David Holsgrove wrote:
> diff --git a/libgloss/microblaze/linux-crt0.S b/libgloss/microblaze/linux-crt0.S
> ...
> + brlid r15, __init
> + nop
> +
> ...
> + /* Replacement for the GCC provided crti.S. This one avoids the
> + setup of stack protection regs (which result in privilieged
> + insn exceptions when running in user-space). */
> + .section .init, "ax"
> + .global __init
> + .align 2
> +__init:
> + addik r1, r1, -8
> + sw r15, r0, r1
> +
> + .section .fini, "ax"
> + .global __fini
> + .align 2
> +__fini:
> + addik r1, r1, -8
> + sw r15, r0, r1
>
David:
It seems a bit odd that neither __init() nor __fini() have rtsd instructions at
their end. Given the way that __init() is called from _start(), it does not
appear that this would work correctly. Is this really the way it should be?
I normally run with the standalone BSP, which does end up with the GCC crti.
With respect to that, this is not just leaving out the stack protection setup.
It is also missing a couple of function calls, as well as the return. It's
almost like an edit of it took from the SHR setup through the end of __init(),
rather than just the 4 instructions for SHR setup. (This observation is based
on the comment which says it is a crti replacement without SHR.) __fini() is
similar.
Craig
More information about the Newlib
mailing list