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
l4-hackers@os.inf.tu-dresden.de