MIPS Creator CI20 patches (again)

Paul Boddie paul at boddie.org.uk
Tue Jan 9 01:02:58 CET 2018


On Tuesday 9. January 2018 00.46.53 Adam Lackorzynski wrote:
> On Mon Jan 08, 2018 at 01:14:09 +0100, Paul Boddie wrote:
> > 
> > I'm aiming to follow up with the binutils maintainers about this, but I
> > just wondered if any of this sounded problematic or familiar.
> 
> No, not familiar. It works with the older tool set, i.e. would be
> interesting whether the more recent ones are not ok here or the code
> needs to change.

I posted another message to the Debian bug I filed, but what I did discover 
was that if I wrap the core of the assembly language routine within a C-level 
function, the toolchain doesn't have a problem with the function, even if I 
set the visibility to internal:

void __attribute__((visibility("internal"))) thread2(void)
{
  asm (
    ".set push; .set noreorder;"
    L4UTIL_THREAD_START_SETUP_GP
    "la $t9, thread2_worker_function\n"
    "  jal $t9 \n"
    "   nop    \n"
    ".set pop"
  );
}

So, I am assuming that the compiler gets confused by the freestanding assembly 
language definition of the function, and the object goes missing in some way 
that then leads to the error. Of course, the above introduces other operations 
that are superfluous, but perhaps not harmful, due to the general boilerplate 
included in C-level functions.

Anyway, I'll see if I get any response from the other discussion.

Thanks for responding!

Paul




More information about the l4-hackers mailing list