shithub: riscv

Download patch

ref: f163d0014a6ccd3417c45a05f831e73f2f9f6cf7
parent: 6c758d94bf239b94072d635f28b53a976a515fd6
author: cinap_lenrek <[email protected]>
date: Wed Oct 2 16:52:13 EDT 2013

libmach: fix wrong formating for arm LDRH/STRH/LDRSB/LDRSH (MOVHU/MOVBU) instructions

--- a/sys/src/libmach/5db.c
+++ b/sys/src/libmach/5db.c
@@ -499,7 +499,7 @@
 armhwby(Opcode *o, Instr *i)
 {
 	i->store = ((i->w >> 23) & 0x2) | ((i->w >>21) & 0x1);
-	i->imm = (i->w & 0xf) | ((i->w >> 8) & 0xf);
+	i->imm = (i->w & 0xf) | ((i->w >> 4) & 0xf0);
 	if (!(i->w & (1 << 23)))
 		i->imm = - i->imm;
 	i->rn = (i->w >> 16) & 0xf;
@@ -930,9 +930,9 @@
 	"SWPB",		armdpi, 0,	"R%s,(R%n),R%d",
 
 /* 48+16+4 */
-	"MOV%u%C%p",	armhwby, 0,	"R%d,(R%n%UR%M)",
+	"MOV%u%C%p",	armhwby, 0,	"R%d,(R%n%UR%s)",
 	"MOV%u%C%p",	armhwby, 0,	"R%d,%I",
-	"MOV%u%C%p",	armhwby, armfmov,	"(R%n%UR%M),R%d",
+	"MOV%u%C%p",	armhwby, armfmov,	"(R%n%UR%s),R%d",
 	"MOV%u%C%p",	armhwby, armfmov,	"%I,R%d",
 
 /* 48+24 */