diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5402c66..64b431a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,12 +19,20 @@ jobs: test: strategy: matrix: - os: - - ubuntu-24.04 - - macos-15 go: - stable - oldstable + arch: + - amd64 + - arm64 + - 386 + include: + - arch: amd64 + os: ubuntu-24.04 + - arch: 386 + os: ubuntu-24.04 + - arch: arm64 + os: macos-15 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -33,3 +41,5 @@ jobs: go-version: ${{ matrix.go }} - run: go test shell: bash + env: + GOARCH: ${{ matrix.arch }} diff --git a/asm_386.s b/asm_386.s new file mode 100644 index 0000000..0264404 --- /dev/null +++ b/asm_386.s @@ -0,0 +1,33 @@ +#include "textflag.h" +#include "funcdata.h" +#include "go_asm.h" + +TEXT ·waserror(SB),NOSPLIT|NOFRAME,$0 + NO_LOCAL_POINTERS + MOVL cp+0(FP), DI + MOVL SP, Checkpoint_sp(DI) + MOVL DX, Checkpoint_ctxt(DI) + MOVL (SP), AX + MOVL AX, Checkpoint_pc(DI) + MOVL TLS, CX + MOVL 4(CX)(TLS*1), AX + MOVL AX, Checkpoint_probe(DI) + MOVB $0, ret+4(FP) + RET + +TEXT ·raise(SB),NOSPLIT|NOFRAME,$0 + NO_LOCAL_POINTERS + MOVL cp+0(FP), DI + MOVL Checkpoint_sp(DI), SP + MOVL Checkpoint_ctxt(DI), DX + MOVL Checkpoint_pc(DI), AX + MOVL AX, (SP) + MOVB $1, ret+4(FP) + RET + +TEXT ·getbp(SB),NOSPLIT|NOFRAME,$0 + NO_LOCAL_POINTERS + MOVL TLS, DI + MOVL 4(DI)(TLS*1), AX // g.stack.hi -> AX + MOVL AX, ret+4(FP) + RET