• Russ Cox's avatar
    runtime: refactor/fix asmcgocall/asmcgocall_errno · cb767247
    Russ Cox authored
    Instead of making asmcgocall call asmcgocall_errno,
    make both load args into registers and call a shared
    assembly function.
    
    On amd64, this costs 1 word in the asmcgocall_errno path
    but saves 3 words in the asmcgocall path, and the latter
    is what happens on critical nosplit paths on Windows.
    
    On arm, this fixes build failures: asmcgocall was writing
    the arguments for asmcgocall_errno into the wrong
    place on the stack. Passing them in registers avoids the
    decision entirely.
    
    On 386, this isn't really needed, since the nosplit paths
    have twice as many words to work with, but do it for consistency.
    
    Update #8635
    Fixes arm build (except GOARM=5).
    
    TBR=iant
    CC=golang-codereviews
    https://golang.org/cl/134390043
    cb767247
asm_amd64.s 44.7 KB