+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
/***************************************************************************
* Copyright (C) 2013 Andes Technology *
* Hsiangkai Wang <hkwang@andestech.com> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
switch (sub_opcode & 0x7) {
case 0: /* LB */
nds32_parse_type_3(opcode, &(instruction->info.rt),
- &(instruction->info.ra), \
+ &(instruction->info.ra),
&(instruction->info.rb), &(instruction->info.imm));
instruction->type = NDS32_INSN_LOAD_STORE;
nds32_get_mapped_reg(nds32, instruction->info.ra, &val_ra);
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMULTS64\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMULT64\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMADDS64\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMADD64\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMSUBS64\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMSUB64\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tDIVS\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tDIV\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMULT32\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMADD32\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
"0x%8.8" PRIx32 "\t0x%8.8" PRIx32
"\tMSUB32\t$D%" PRIu8 ",$r%" PRIu8 ",$r%" PRIu8,
address,
- opcode, (dt_val >> 1) & 0x1, instruction->info.ra,
+ opcode, (uint8_t)((dt_val >> 1) & 0x1), instruction->info.ra,
instruction->info.rb);
}
break;
static uint8_t nds32_extract_field_8u(uint16_t opcode, uint32_t start, uint32_t length)
{
- if (0 < length && length < 9)
+ if (length > 0 && length < 9)
return (opcode >> start) & field_mask[length];
return 0;
"0x%8.8" PRIx32 "\t0x%4.4" PRIx16
"\t\tBREAK16\t#%" PRId16,
address,
- opcode, opcode & 0x1F);
+ opcode, (int16_t)(opcode & 0x1F));
} else { /* EX9.IT */
instruction->type = NDS32_INSN_MISC;
/* TODO: implement real instruction semantics */
"0x%8.8" PRIx32 "\t0x%4.4" PRIx16
"\t\tEX9.IT\t#%" PRId16,
address,
- opcode, opcode & 0x1FF);
+ opcode, (int16_t)(opcode & 0x1FF));
}
break;
case 2: /* ADDI10S */