0015-fix-incorrect-pref-address-range.patch 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. From 89cf714ef1580a32159b4f4df426bafcdc3ef21a Mon Sep 17 00:00:00 2001
  2. From: "max.ma" <max.ma@starfivetech.com>
  3. Date: Sun, 6 Mar 2022 15:48:51 -0800
  4. Subject: [PATCH 15/15] fix incorrect pref address range
  5. ---
  6. gas/config/tc-riscv.c | 8 ++++----
  7. 1 file changed, 4 insertions(+), 4 deletions(-)
  8. diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
  9. index fca5c8949d..13524e585d 100644
  10. --- a/gas/config/tc-riscv.c
  11. +++ b/gas/config/tc-riscv.c
  12. @@ -2691,14 +2691,14 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
  13. case '+':
  14. my_getExpression (imm_expr, s);
  15. check_absolute_expr (ip, imm_expr, FALSE);
  16. - if ((unsigned long) imm_expr->X_add_number > 0xff)
  17. - as_bad (_("Improper pref offset value (%lu)"),
  18. - (unsigned long) imm_expr->X_add_number);
  19. + if (imm_expr->X_add_number > 127 || imm_expr->X_add_number < -128)
  20. + as_bad (_("Improper pref offset value (%d)"),
  21. + (long) imm_expr->X_add_number);
  22. INSERT_OPERAND (PREF_OFFSET, *ip, imm_expr->X_add_number);
  23. imm_expr->X_op = O_absent;
  24. s = expr_end;
  25. continue;
  26. -
  27. +
  28. case 'E': /* Control register. */
  29. insn_with_csr = true;
  30. explicit_priv_attr = true;
  31. --
  32. 2.33.1