diff --git a/src/cmd/link/internal/ld/config.go b/src/cmd/link/internal/ld/config.go
index 7cce28dac5..080315b8a1 100644
--- a/src/cmd/link/internal/ld/config.go
+++ b/src/cmd/link/internal/ld/config.go
@@ -211,10 +211,5 @@ func determineLinkMode(ctxt *Link) {
 		if extNeeded {
 			Exitf("internal linking requested %sbut external linking required: %s", via, extReason)
 		}
-	case LinkExternal:
-		switch {
-		case buildcfg.GOARCH == "ppc64" && buildcfg.GOOS != "aix":
-			Exitf("external linking not supported for %s/ppc64", buildcfg.GOOS)
-		}
 	}
 }
diff --git a/src/runtime/cgo/asm_ppc64x.s b/src/runtime/cgo/asm_ppc64x.s
index c201005044..084413ad17 100644
--- a/src/runtime/cgo/asm_ppc64x.s
+++ b/src/runtime/cgo/asm_ppc64x.s
@@ -30,13 +30,6 @@ TEXT crosscall2(SB),NOSPLIT|NOFRAME,$0
 	BL	runtime·reginit(SB)
 	BL	runtime·load_g(SB)
 
-#ifdef GOARCH_ppc64
-	// ppc64 use elf ABI v1. we must get the real entry address from
-	// first slot of the function descriptor before call.
-	// Same for AIX.
-	MOVD	8(R3), R2
-	MOVD	(R3), R3
-#endif
 	MOVD	R3, FIXED_FRAME+0(R1)	// fn unsafe.Pointer
 	MOVD	R4, FIXED_FRAME+8(R1)	// a unsafe.Pointer
 	// Skip R5 = n uint32
