diff --git a/ChangeLog b/ChangeLog
index 1cf3e94038daf4cdcf17bbf46b6ab306bc818397..c3d1b4fabdf73e76a6f47735fa18a107e00896ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-25  Niels Möller  <nisse@lysator.liu.se>
+
+	* x86_64/chacha-core-internal.asm (QROUND): Fix use of macro
+	arguments. Spotted by Torbjörn Granlund.
+
 2020-06-02  Niels Möller  <nisse@lysator.liu.se>
 
 	* examples/nettle-benchmark.c (main): Delete call to
diff --git a/x86_64/chacha-core-internal.asm b/x86_64/chacha-core-internal.asm
index 9e5dc394fb9ea73af57af5e735ac1b0fedc6e4e9..0c6f74247d4fe3fd7a238a60104712089d5295df 100644
--- a/x86_64/chacha-core-internal.asm
+++ b/x86_64/chacha-core-internal.asm
@@ -54,33 +54,33 @@ define(<ROTL_BY_16>, <
 	por	$2, $1
 >)
 >)
-C QROUND
+C QROUND(x0, x1, x2, x3)
 define(<QROUND>, <
-	paddd	X1, X0
-	pxor	X0, X3
-	movaps	X3, T0
-	ROTL_BY_16(X3, T0)
-
-	paddd	X3, X2
-	pxor	X2, X1
-	movaps	X1, T0
-	pslld	<$>12, X1
+	paddd	$2, $1
+	pxor	$1, $4
+	movaps	$4, T0
+	ROTL_BY_16($4, T0)
+
+	paddd	$4, $3
+	pxor	$3, $2
+	movaps	$2, T0
+	pslld	<$>12, $2
 	psrld	<$>20, T0
-	por	T0, X1
+	por	T0, $2
 
-	paddd	X1, X0
-	pxor	X0, X3
-	movaps	X3, T0
-	pslld	<$>8, X3
+	paddd	$2, $1
+	pxor	$1, $4
+	movaps	$4, T0
+	pslld	<$>8, $4
 	psrld	<$>24, T0
-	por	T0, X3
+	por	T0, $4
 		
-	paddd	X3, X2
-	pxor	X2, X1
-	movaps	X1, T0
-	pslld	<$>7, X1
+	paddd	$4, $3
+	pxor	$3, $2
+	movaps	$2, T0
+	pslld	<$>7, $2
 	psrld	<$>25, T0
-	por	T0, X1
+	por	T0, $2
 >)
 	
 	C _chacha_core(uint32_t *dst, const uint32_t *src, unsigned rounds)