diff --git a/ChangeLog b/ChangeLog
index f9de966e5a16b0d140a7188feeb91114dc51c525..291b97d0b991992f027053fc85a1af09d93fed9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2015-01-12  Niels Möller  <nisse@lysator.liu.se>
 
+	* asm.m4 (DECLARE_FUNC): New macro, extracted from PROLOGUE.
+	(PROLOGUE): Use it.
+
 	* configure.ac (OPT_NETTLE_OBJS, OPT_HOGWEED_OBJS): Renamed
 	substituted variables, and list the object files rather than
 	source files.
diff --git a/asm.m4 b/asm.m4
index d59191e14119d5fae2e838fbbb7a2f50add265e8..68ec6f5906cc67a78701bbd483af6d33d82a595b 100644
--- a/asm.m4
+++ b/asm.m4
@@ -13,21 +13,20 @@ dnl Including files from the srcdir
 define(<include_src>, <include(srcdir/$1)>)dnl
 
 dnl Pseudo ops
-
-define(<PROLOGUE>,
+define(<DECLARE_FUNC>,
 <ifelse(ELF_STYLE,yes,
-<.globl C_NAME($1)
-.type C_NAME($1),TYPE_FUNCTION
-C_NAME($1):>,
-COFF_STYLE, <yes>,
-<.globl C_NAME($1)
-.def C_NAME($1)
+<.type $1,TYPE_FUNCTION>,
+COFF_STYLE, yes,
+<.def $1
 .scl 2
 .type 32
-.endef
-C_NAME($1):>,
+.endef>,
+<>)>)
+
+define(<PROLOGUE>,
 <.globl C_NAME($1)
-C_NAME($1):>)>)
+DECLARE_FUNC(C_NAME($1))
+C_NAME($1):>)
 
 define(<EPILOGUE>,
 <ifelse(ELF_STYLE,yes,