Skip to content
  • Chris Metcalf's avatar
    arch/tile: extend syscall ABI to set r1 on return as well. · ba00376b
    Chris Metcalf authored
    
    
    Until now, the tile architecture ABI for syscall return has just been
    that r0 holds the return value, and an error is only signalled like it is
    for kernel code, with a negative small number.
    
    However, this means that in multiple places in userspace we end up writing
    the same three-cycle idiom that tests for a small negative number for
    error.  It seems cleaner to instead move that code into the kernel, and
    set r1 to hold zero on success or errno on failure; previously, r1 was
    just zeroed on return from the kernel (to avoid leaking kernel state).
    This way a single conditional branch after the syscall is sufficient
    to test for the failure case.  The number of cycles taken is the same,
    but the error-checking code is in just one place, so total code size is
    smaller, and random userspace syscall code is easier to understand.
    
    Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
    ba00376b