diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go
index cfbf30d918b33f0382fa4f006be0dfc471a8c018..2ce968a46dc99d464410a8bcba264b6c2ba244b7 100644
--- a/src/cmd/go/build.go
+++ b/src/cmd/go/build.go
@@ -1903,7 +1903,7 @@ func (b *builder) gccArchArgs() []string {
 	case "6":
 		return []string{"-m64"}
 	case "5":
-		return []string{"-marm", "-march=armv5t"} // not thumb
+		return []string{"-marm"} // not thumb
 	}
 	return nil
 }
diff --git a/src/pkg/runtime/cgo/gcc_arm.S b/src/pkg/runtime/cgo/gcc_arm.S
index cfe899b1d287b529785789ef0695f8a2135a8ee0..17e98d91f62748b9eaa505e845305de2e81c6976 100644
--- a/src/pkg/runtime/cgo/gcc_arm.S
+++ b/src/pkg/runtime/cgo/gcc_arm.S
@@ -11,6 +11,13 @@
 #define EXT(s) s
 #endif
 
+/*
+ * Because the assembler might target an earlier revision of the ISA
+ * by default, we must explicitly specify the ISA revision to ensure
+ * BLX is recognized as a valid instruction.
+ */	
+.arch armv5t
+
 /*
  * void crosscall_arm2(void (*fn)(void), void (*setmg_gcc)(void *m, void *g), void *m, void *g)
  *