target/mips: Clean up handling of CP0 register 18

Clean up handling of CP0 register 18.

Backports commit e8dcfe825a51c5e963813343ec4112f06a0acf68 from qemu
This commit is contained in:
Aleksandar Markovic 2019-11-18 23:20:33 -05:00 committed by Lioncash
parent 0424d7bd24
commit e126751cdc
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
2 changed files with 44 additions and 40 deletions

View file

@ -191,14 +191,14 @@ typedef struct mips_def_t mips_def_t;
* Register 16 Register 17 Register 18 Register 19
* ----------- ----------- ----------- -----------
*
* 0 Config LLAddr WatchLo WatchHi
* 1 Config1 MAAR WatchLo WatchHi
* 2 Config2 MAARI WatchLo WatchHi
* 3 Config3 WatchLo WatchHi
* 4 Config4 WatchLo WatchHi
* 5 Config5 WatchLo WatchHi
* 6 WatchLo WatchHi
* 7 WatchLo WatchHi
* 0 Config LLAddr WatchLo0 WatchHi
* 1 Config1 MAAR WatchLo1 WatchHi
* 2 Config2 MAARI WatchLo2 WatchHi
* 3 Config3 WatchLo3 WatchHi
* 4 Config4 WatchLo4 WatchHi
* 5 Config5 WatchLo5 WatchHi
* 6 WatchLo6 WatchHi
* 7 WatchLo7 WatchHi
*
*
* Register 20 Register 21 Register 22 Register 23
@ -385,6 +385,10 @@ typedef struct mips_def_t mips_def_t;
#define CP0_REG18__WATCHLO1 1
#define CP0_REG18__WATCHLO2 2
#define CP0_REG18__WATCHLO3 3
#define CP0_REG18__WATCHLO4 4
#define CP0_REG18__WATCHLO5 5
#define CP0_REG18__WATCHLO6 6
#define CP0_REG18__WATCHLO7 7
/* CP0 Register 19 */
#define CP0_REG19__WATCHHI0 0
#define CP0_REG19__WATCHHI1 1

View file

@ -7384,14 +7384,14 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
break;
case CP0_REGISTER_18:
switch (sel) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case CP0_REG18__WATCHLO0:
case CP0_REG18__WATCHLO1:
case CP0_REG18__WATCHLO2:
case CP0_REG18__WATCHLO3:
case CP0_REG18__WATCHLO4:
case CP0_REG18__WATCHLO5:
case CP0_REG18__WATCHLO6:
case CP0_REG18__WATCHLO7:
CP0_CHECK(ctx->CP0_Config1 & (1 << CP0C1_WR));
gen_helper_1e0i(tcg_ctx, mfc0_watchlo, arg, sel);
register_name = "WatchLo";
@ -8120,14 +8120,14 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
break;
case CP0_REGISTER_18:
switch (sel) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case CP0_REG18__WATCHLO0:
case CP0_REG18__WATCHLO1:
case CP0_REG18__WATCHLO2:
case CP0_REG18__WATCHLO3:
case CP0_REG18__WATCHLO4:
case CP0_REG18__WATCHLO5:
case CP0_REG18__WATCHLO6:
case CP0_REG18__WATCHLO7:
CP0_CHECK(ctx->CP0_Config1 & (1 << CP0C1_WR));
gen_helper_0e1i(tcg_ctx, mtc0_watchlo, arg, sel);
register_name = "WatchLo";
@ -8853,14 +8853,14 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
break;
case CP0_REGISTER_18:
switch (sel) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case CP0_REG18__WATCHLO0:
case CP0_REG18__WATCHLO1:
case CP0_REG18__WATCHLO2:
case CP0_REG18__WATCHLO3:
case CP0_REG18__WATCHLO4:
case CP0_REG18__WATCHLO5:
case CP0_REG18__WATCHLO6:
case CP0_REG18__WATCHLO7:
CP0_CHECK(ctx->CP0_Config1 & (1 << CP0C1_WR));
gen_helper_1e0i(tcg_ctx, dmfc0_watchlo, arg, sel);
register_name = "WatchLo";
@ -9567,14 +9567,14 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
break;
case CP0_REGISTER_18:
switch (sel) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case CP0_REG18__WATCHLO0:
case CP0_REG18__WATCHLO1:
case CP0_REG18__WATCHLO2:
case CP0_REG18__WATCHLO3:
case CP0_REG18__WATCHLO4:
case CP0_REG18__WATCHLO5:
case CP0_REG18__WATCHLO6:
case CP0_REG18__WATCHLO7:
CP0_CHECK(ctx->CP0_Config1 & (1 << CP0C1_WR));
gen_helper_0e1i(tcg_ctx, mtc0_watchlo, arg, sel);
register_name = "WatchLo";