<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Attempting to build Wireguard on a Raspberry Pi will result in an
assembly error <br>
</p>
<p> Error: immediate expression requires a # prefix -- `moveq
r5,1'</p>
<p>(the full build error log can be found here:
<a class="moz-txt-link-freetext" href="https://pastebin.com/CKTXwGyG">https://pastebin.com/CKTXwGyG</a>)<br>
</p>
<p>Appending # to the values and telling ARM to treat them as
literals solves the issue.</p>
<p>I was able to test this patch out on my own Raspberry Pi 3B+ and
can confirm the resulting build is successfully able to build,
create the wg0 interface, generate a private key, connect to a
peer, and send encrypted messages back and forth.</p>
<p>justw and revel assisted in providing the fix via the Wireguard
irc channel.<br>
</p>
<p><br>
</p>
<pre style="color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">curve25519: arm: Compile on Raspi
diff --git a/src/crypto/curve25519-arm.S b/src/crypto/curve25519-arm.S
index cb40c24..f9d50e9 100644
--- a/src/crypto/curve25519-arm.S
+++ b/src/crypto/curve25519-arm.S
@@ -1554,35 +1554,35 @@ ENTRY(curve25519_neon)
movw r4, 0
movw r5, 2
cmp r1, #1
- moveq r5, 1
+ moveq r5, #1
addeq r2, r3, #336
addeq r4, r3, #48
cmp r1, #2
- moveq r5, 1
+ moveq r5, #1
addeq r2, r3, #48
cmp r1, #3
- moveq r5, 5
+ moveq r5, #5
addeq r4, r3, #336
cmp r1, #4
- moveq r5, 10
+ moveq r5, #10
cmp r1, #5
- moveq r5, 20
+ moveq r5, #20
cmp r1, #6
- moveq r5, 10
+ moveq r5, #10
addeq r2, r3, #336
addeq r4, r3, #336
cmp r1, #7
- moveq r5, 50
+ moveq r5, #50
cmp r1, #8
- moveq r5, 100
+ moveq r5, #100
cmp r1, #9
- moveq r5, 50
+ moveq r5, #50
addeq r2, r3, #336
cmp r1, #10
- moveq r5, 5
+ moveq r5, #5
addeq r2, r3, #48
cmp r1, #11
- moveq r5, 0
+ moveq r5, #0
addeq r2, r3, #96
add r6, r3, #144
add r7, r3, #288</pre>
</body>
</html>