building l4 for mips64

"Antoine Amirault" <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.l4ka.general
Message-ID <[email protected]>
HI!
I'm always trying to build l4 for mips64. I've decided to try to correct
errors i obtain during the compilation. I've repaired some of them but now
I'm stuck.
I think I've understand the problem, but I don't know how to solve it.
When compiling, I got this error :

/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc: In function
`threadid_t sys_exchange_registers(threadid_t, word_t, word_t, word_t,
word_t, word_t, threadid_t, bool)':
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: error: data
type of 'pgr' isn't suitable for a register
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: error:
register name given for non-register variable 'pgr'
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: confused by
earlier errors, bailing out
make[1]: *** [src/api/v4/exregs.o] Error 1

I've found in syscall.h where this function is declared. I got this code :

#define return_exchange_registers(result, control, sp, ip, flags, pager,
handle)    \
{                                \
    register word_t ctrl asm("$4") = control;    /* a0 */    \
    register word_t sp_r asm("$5") = sp;    /* a1 */    \
    register word_t ip_r asm("$6") = ip;    /* a2 */    \
    register word_t flg asm("$7") = flags;    /* a3 */    \
    register threadid_t pgr asm("$8") = pager;    /* t0 */    \
    register word_t hdl asm("$9") = handle;    /* t1 */    \
\
    __asm__ __volatile__ (                    \
    "" : : "r" (ctrl), "r" (sp_r), "r" (ip_r),        \
    "r" (flg), "r" (pgr), "r" (hdl)                \
    );                                \
    return (result);                        \
}

I think that it's impossible to store a threadid_t in a register so i tried
to cast it to word_t but after i got this error message :

/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc: In function
`threadid_t sys_exchange_registers(threadid_t, word_t, word_t, word_t,
word_t, word_t, threadid_t, bool)':
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: error:
expected primary-expression before "register"
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: error:
expected `;' before "register"
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: error: `pgr'
undeclared (first use this function)
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:333: error: (Each
undeclared identifier is reported only once for each function it appears
in.)
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:352: error:
expected primary-expression before "register"
/home/antoine/Final/pistachio/kernel/src/api/v4/exregs.cc:352: error:
expected `;' before "register"
make[1]: *** [src/api/v4/exregs.o] Error 1

Maybe my idea is not good or I haven't really understand the problem.
Any ideas?
Thanks
Antoine
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.