Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51eec48e authored by Leonid Yegoshin's avatar Leonid Yegoshin Committed by Markos Chandras
Browse files

MIPS: mm: uasm: Add signed 9-bit immediate related macros



MIPS R6 redefines several instructions and reduces the immediate
field to 9-bits so add related macros for the microassembler.

Signed-off-by: default avatarLeonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
parent 7fd08ca5
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@ enum fields {
	JIMM = 0x080,
	FUNC = 0x100,
	SET = 0x200,
	SCIMM = 0x400
	SCIMM = 0x400,
	SIMM9 = 0x800,
};

#define OP_MASK		0x3f
@@ -41,6 +42,8 @@ enum fields {
#define FUNC_SH		0
#define SET_MASK	0x7
#define SET_SH		0
#define SIMM9_SH	7
#define SIMM9_MASK	0x1ff

enum opcode {
	insn_invalid,
@@ -116,6 +119,14 @@ static inline u32 build_scimm(u32 arg)
	return (arg & SCIMM_MASK) << SCIMM_SH;
}

static inline u32 build_scimm9(s32 arg)
{
	WARN((arg > 0xff || arg < -0x100),
	       KERN_WARNING "Micro-assembler field overflow\n");

	return (arg & SIMM9_MASK) << SIMM9_SH;
}

static inline u32 build_func(u32 arg)
{
	WARN(arg & ~FUNC_MASK, KERN_WARNING "Micro-assembler field overflow\n");