diff --git a/mk/config.mk.in b/mk/config.mk.in
index f96302b4febb4f4d7468b0ee555f17656fd586ae..3d2d6c0798899d32eed13b2414e5ebaf7180492e 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -548,6 +548,11 @@ CC_STAGE0       = @CC_STAGE0@
 CC_STAGE1       = $(CC)
 CC_STAGE2       = $(CC)
 CC_STAGE3       = $(CC)
+AS              = $(WhatGccIsCalled)
+AS_STAGE0       = @CC_STAGE0@
+AS_STAGE1       = $(AS)
+AS_STAGE2       = $(AS)
+AS_STAGE3       = $(AS)
 
 # C compiler and linker flags from configure (e.g. -m<blah> to select
 # correct C compiler backend). The stage number is the stage of GHC
diff --git a/rules/c-suffix-rules.mk b/rules/c-suffix-rules.mk
index bba73a82c6fafd7f00114b335401c6f62514f7b5..a4a0b579db0b24ca98b9f93ae1c41eaf8f4b0a96 100644
--- a/rules/c-suffix-rules.mk
+++ b/rules/c-suffix-rules.mk
@@ -49,7 +49,7 @@ $1/$2/build/%.$$($3_osuf) : $1/$2/build/%.c
 	"$$($1_$2_CC)" $$($1_$2_$3_ALL_CC_OPTS) -c $$< -o $$@
 
 $1/$2/build/%.$$($3_osuf) : $1/$2/build/%.$$($3_way_)s
-	"$$(AS)" $$($1_$2_$3_ALL_AS_OPTS) -o $$@ $$<
+	"$$($1_$2_AS)" $$($1_$2_$3_ALL_AS_OPTS) -o $$@ $$<
 
 $1/$2/build/%.$$($3_osuf) : $1/%.S | $$$$(dir $$$$@)/.
 	"$$($1_$2_CC)" $$($1_$2_$3_ALL_CC_OPTS) -c $$< -o $$@
diff --git a/rules/package-config.mk b/rules/package-config.mk
index 7873157363ea44e2b83c75ea57084113cdfd77ba..177ca2517df00ff14bec6a5ad7b11d67bd407a87 100644
--- a/rules/package-config.mk
+++ b/rules/package-config.mk
@@ -17,6 +17,7 @@ $(call profStart, package-config($1,$2,$3))
 
 $1_$2_HC = $$(GHC_STAGE$3)
 $1_$2_CC = $$(CC_STAGE$3)
+$1_$2_AS = $$(AS_STAGE$3)
 $1_$2_AR = $$(AR_STAGE$3)
 $1_$2_AR_OPTS = $$(AR_OPTS_STAGE$3)
 $1_$2_EXTRA_AR_ARGS = $$(EXTRA_AR_ARGS_STAGE$3)