static void | |
get_error(struct tcb *tcp, const bool check_errno) | |
{ | |
/* | |
* The standard tile calling convention returns the value | |
* (or negative errno) in r0, and zero (or positive errno) in r1. | |
* Until at least kernel 3.8, however, the r1 value is not | |
* reflected in ptregs at this point, so we use r0 here. | |
*/ | |
if (check_errno && is_negated_errno(tile_regs.regs[0])) { | |
tcp->u_rval = -1; | |
tcp->u_error = -tile_regs.regs[0]; | |
} else { | |
tcp->u_rval = tile_regs.regs[0]; | |
} | |
} |