* [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers
@ 2011-06-18 21:45 Blue Swirl
2011-06-18 22:11 ` Peter Maydell
2011-06-18 22:41 ` Robert Reif
0 siblings, 2 replies; 4+ messages in thread
From: Blue Swirl @ 2011-06-18 21:45 UTC (permalink / raw)
To: qemu-devel, Bob Breuer, Robert Reif
[-- Attachment #1: Type: text/plain, Size: 3015 bytes --]
Add dummy registers for SuperSPARC MXCC MMU counter breakpoints.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
target-sparc/cpu.h | 1 +
target-sparc/op_helper.c | 26 ++++++++++++++++++++++++--
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 320530e..b5d5291 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -403,6 +403,7 @@ typedef struct CPUSPARCState {
uint32_t mmuregs[32];
uint64_t mxccdata[4];
uint64_t mxccregs[8];
+ uint32_t mmubpctrv, mmubpctrc, mmubpctrs, mmubpaction;
uint64_t mmubpregs[4];
uint64_t prom_addr;
#endif
diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index b38691e..e9cc1f5 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -1940,7 +1940,6 @@ uint64_t helper_ld_asi(target_ulong addr, int
asi, int size, int sign)
case 0x31: // Turbosparc RAM snoop
case 0x32: // Turbosparc page table descriptor diagnostic
case 0x39: /* data cache diagnostic register */
- case 0x4c: /* SuperSPARC MMU Breakpoint Action register */
ret = 0;
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers */
@@ -1966,6 +1965,18 @@ uint64_t helper_ld_asi(target_ulong addr, int
asi, int size, int sign)
ret);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ ret = env->mmubpctrv;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ ret = env->mmubpctrc;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ ret = env->mmubpctrs;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ ret = env->mmubpaction;
+ break;
case 8: /* User code access, XXX */
default:
do_unassigned_access(addr, 0, 0, asi, size);
@@ -2304,7 +2315,6 @@ void helper_st_asi(target_ulong addr, uint64_t
val, int asi, int size)
// descriptor diagnostic
case 0x36: /* I-cache flash clear */
case 0x37: /* D-cache flash clear */
- case 0x4c: /* breakpoint action */
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers*/
{
@@ -2328,6 +2338,18 @@ void helper_st_asi(target_ulong addr, uint64_t
val, int asi, int size)
env->mmuregs[reg]);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ env->mmubpctrv = val & 0xffffffff;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ env->mmubpctrc = val & 0x3;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ env->mmubpctrs = val & 0x3;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ env->mmubpaction = val & 0x1fff;
+ break;
case 8: /* User code access, XXX */
case 9: /* Supervisor code access, XXX */
default:
--
1.6.2.4
[-- Attachment #2: 0001-Sparc32-dummy-implementation-of-MXCC-MMU-breakpoint-.patch --]
[-- Type: text/x-patch, Size: 3337 bytes --]
From 52463bf611b3353842525cf7544d7b3d55da8a1e Mon Sep 17 00:00:00 2001
Message-Id: <52463bf611b3353842525cf7544d7b3d55da8a1e.1308433438.git.blauwirbel@gmail.com>
From: Blue Swirl <blauwirbel@gmail.com>
Date: Sat, 18 Jun 2011 20:27:05 +0000
Subject: [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers
Add dummy registers for SuperSPARC MXCC MMU counter breakpoints.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
target-sparc/cpu.h | 1 +
target-sparc/op_helper.c | 26 ++++++++++++++++++++++++--
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 320530e..b5d5291 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -403,6 +403,7 @@ typedef struct CPUSPARCState {
uint32_t mmuregs[32];
uint64_t mxccdata[4];
uint64_t mxccregs[8];
+ uint32_t mmubpctrv, mmubpctrc, mmubpctrs, mmubpaction;
uint64_t mmubpregs[4];
uint64_t prom_addr;
#endif
diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index b38691e..e9cc1f5 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -1940,7 +1940,6 @@ uint64_t helper_ld_asi(target_ulong addr, int asi, int size, int sign)
case 0x31: // Turbosparc RAM snoop
case 0x32: // Turbosparc page table descriptor diagnostic
case 0x39: /* data cache diagnostic register */
- case 0x4c: /* SuperSPARC MMU Breakpoint Action register */
ret = 0;
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers */
@@ -1966,6 +1965,18 @@ uint64_t helper_ld_asi(target_ulong addr, int asi, int size, int sign)
ret);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ ret = env->mmubpctrv;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ ret = env->mmubpctrc;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ ret = env->mmubpctrs;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ ret = env->mmubpaction;
+ break;
case 8: /* User code access, XXX */
default:
do_unassigned_access(addr, 0, 0, asi, size);
@@ -2304,7 +2315,6 @@ void helper_st_asi(target_ulong addr, uint64_t val, int asi, int size)
// descriptor diagnostic
case 0x36: /* I-cache flash clear */
case 0x37: /* D-cache flash clear */
- case 0x4c: /* breakpoint action */
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers*/
{
@@ -2328,6 +2338,18 @@ void helper_st_asi(target_ulong addr, uint64_t val, int asi, int size)
env->mmuregs[reg]);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ env->mmubpctrv = val & 0xffffffff;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ env->mmubpctrc = val & 0x3;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ env->mmubpctrs = val & 0x3;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ env->mmubpaction = val & 0x1fff;
+ break;
case 8: /* User code access, XXX */
case 9: /* Supervisor code access, XXX */
default:
--
1.7.2.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers
2011-06-18 21:45 [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers Blue Swirl
@ 2011-06-18 22:11 ` Peter Maydell
2011-06-18 22:41 ` Robert Reif
1 sibling, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2011-06-18 22:11 UTC (permalink / raw)
To: Blue Swirl; +Cc: Bob Breuer, qemu-devel, Robert Reif
On 18 June 2011 22:45, Blue Swirl <blauwirbel@gmail.com> wrote:
> Add dummy registers for SuperSPARC MXCC MMU counter breakpoints.
>
> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
> diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
> index 320530e..b5d5291 100644
> --- a/target-sparc/cpu.h
> +++ b/target-sparc/cpu.h
> @@ -403,6 +403,7 @@ typedef struct CPUSPARCState {
> uint32_t mmuregs[32];
> uint64_t mxccdata[4];
> uint64_t mxccregs[8];
> + uint32_t mmubpctrv, mmubpctrc, mmubpctrs, mmubpaction;
> uint64_t mmubpregs[4];
> uint64_t prom_addr;
> #endif
Shouldn't there be a corresponding change to target-sparc/machine.c
adding these to cpu_save()/cpu_load() ? [the existing mxccdata,
mxccregs, mmubpregs don't seem to be saved/restored either...]
-- PMM
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers
2011-06-18 21:45 [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers Blue Swirl
2011-06-18 22:11 ` Peter Maydell
@ 2011-06-18 22:41 ` Robert Reif
1 sibling, 0 replies; 4+ messages in thread
From: Robert Reif @ 2011-06-18 22:41 UTC (permalink / raw)
To: Blue Swirl; +Cc: Bob Breuer, qemu-devel
Blue Swirl wrote:
> Add dummy registers for SuperSPARC MXCC MMU counter breakpoints.
>
> Signed-off-by: Blue Swirl<blauwirbel@gmail.com>
> ---
> target-sparc/cpu.h | 1 +
> target-sparc/op_helper.c | 26 ++++++++++++++++++++++++--
> 2 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
> index 320530e..b5d5291 100644
> --- a/target-sparc/cpu.h
> +++ b/target-sparc/cpu.h
> @@ -403,6 +403,7 @@ typedef struct CPUSPARCState {
> uint32_t mmuregs[32];
> uint64_t mxccdata[4];
> uint64_t mxccregs[8];
> + uint32_t mmubpctrv, mmubpctrc, mmubpctrs, mmubpaction;
> uint64_t mmubpregs[4];
> uint64_t prom_addr;
> #endif
> diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
> index b38691e..e9cc1f5 100644
> --- a/target-sparc/op_helper.c
> +++ b/target-sparc/op_helper.c
> @@ -1940,7 +1940,6 @@ uint64_t helper_ld_asi(target_ulong addr, int
> asi, int size, int sign)
> case 0x31: // Turbosparc RAM snoop
> case 0x32: // Turbosparc page table descriptor diagnostic
> case 0x39: /* data cache diagnostic register */
> - case 0x4c: /* SuperSPARC MMU Breakpoint Action register */
> ret = 0;
> break;
> case 0x38: /* SuperSPARC MMU Breakpoint Control Registers */
> @@ -1966,6 +1965,18 @@ uint64_t helper_ld_asi(target_ulong addr, int
> asi, int size, int sign)
> ret);
> }
> break;
> + case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
> + ret = env->mmubpctrv;
> + break;
> + case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
> + ret = env->mmubpctrc;
> + break;
> + case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
> + ret = env->mmubpctrs;
> + break;
> + case 0x4c: /* SuperSPARC MMU Breakpoint Action */
> + ret = env->mmubpaction;
> + break;
> case 8: /* User code access, XXX */
> default:
> do_unassigned_access(addr, 0, 0, asi, size);
> @@ -2304,7 +2315,6 @@ void helper_st_asi(target_ulong addr, uint64_t
> val, int asi, int size)
> // descriptor diagnostic
> case 0x36: /* I-cache flash clear */
> case 0x37: /* D-cache flash clear */
> - case 0x4c: /* breakpoint action */
> break;
> case 0x38: /* SuperSPARC MMU Breakpoint Control Registers*/
> {
> @@ -2328,6 +2338,18 @@ void helper_st_asi(target_ulong addr, uint64_t
> val, int asi, int size)
> env->mmuregs[reg]);
> }
> break;
> + case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
> + env->mmubpctrv = val& 0xffffffff;
> + break;
> + case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
> + env->mmubpctrc = val& 0x3;
> + break;
> + case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
> + env->mmubpctrs = val& 0x3;
> + break;
> + case 0x4c: /* SuperSPARC MMU Breakpoint Action */
> + env->mmubpaction = val& 0x1fff;
> + break;
> case 8: /* User code access, XXX */
> case 9: /* Supervisor code access, XXX */
> default:
>
The breakpoint action register is 64 bits wide.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers
@ 2011-06-19 13:22 Blue Swirl
0 siblings, 0 replies; 4+ messages in thread
From: Blue Swirl @ 2011-06-19 13:22 UTC (permalink / raw)
To: qemu-devel, Robert Reif, Peter Maydell, Bob Breuer
[-- Attachment #1: Type: text/plain, Size: 4963 bytes --]
Add dummy registers for SuperSPARC MXCC MMU counter breakpoints, save
and load all MXCC registers.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
v2: add save/load for all MXCC registers, fix width of breakpoint
action register
target-sparc/cpu.h | 4 +++-
target-sparc/machine.c | 26 ++++++++++++++++++++++++++
target-sparc/op_helper.c | 26 ++++++++++++++++++++++++--
3 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 320530e..a220bf4 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -403,6 +403,8 @@ typedef struct CPUSPARCState {
uint32_t mmuregs[32];
uint64_t mxccdata[4];
uint64_t mxccregs[8];
+ uint32_t mmubpctrv, mmubpctrc, mmubpctrs;
+ uint64_t mmubpaction;
uint64_t mmubpregs[4];
uint64_t prom_addr;
#endif
@@ -521,7 +523,7 @@ int cpu_sparc_signal_handler(int host_signum, void
*pinfo, void *puc);
#define cpu_signal_handler cpu_sparc_signal_handler
#define cpu_list sparc_cpu_list
-#define CPU_SAVE_VERSION 6
+#define CPU_SAVE_VERSION 7
/* MMU modes definitions */
#if defined (TARGET_SPARC64)
diff --git a/target-sparc/machine.c b/target-sparc/machine.c
index 752e431..bae23c5 100644
--- a/target-sparc/machine.c
+++ b/target-sparc/machine.c
@@ -45,6 +45,19 @@ void cpu_save(QEMUFile *f, void *opaque)
/* MMU */
for (i = 0; i < 32; i++)
qemu_put_be32s(f, &env->mmuregs[i]);
+ for (i = 0; i < 4; i++) {
+ qemu_put_be64s(f, &env->mxccdata[i]);
+ }
+ for (i = 0; i < 8; i++) {
+ qemu_put_be64s(f, &env->mxccregs[i]);
+ }
+ qemu_put_be32s(f, &env->mmubpctrv);
+ qemu_put_be32s(f, &env->mmubpctrc);
+ qemu_put_be32s(f, &env->mmubpctrs);
+ qemu_put_be64s(f, &env->mmubpaction);
+ for (i = 0; i < 4; i++) {
+ qemu_put_be64s(f, &env->mmubpregs[i]);
+ }
#else
qemu_put_be64s(f, &env->lsu);
for (i = 0; i < 16; i++) {
@@ -141,6 +154,19 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
/* MMU */
for (i = 0; i < 32; i++)
qemu_get_be32s(f, &env->mmuregs[i]);
+ for (i = 0; i < 4; i++) {
+ qemu_get_be64s(f, &env->mxccdata[i]);
+ }
+ for (i = 0; i < 8; i++) {
+ qemu_get_be64s(f, &env->mxccregs[i]);
+ }
+ qemu_get_be32s(f, &env->mmubpctrv);
+ qemu_get_be32s(f, &env->mmubpctrc);
+ qemu_get_be32s(f, &env->mmubpctrs);
+ qemu_get_be64s(f, &env->mmubpaction);
+ for (i = 0; i < 4; i++) {
+ qemu_get_be64s(f, &env->mmubpregs[i]);
+ }
#else
qemu_get_be64s(f, &env->lsu);
for (i = 0; i < 16; i++) {
diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index b38691e..e9cc1f5 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -1940,7 +1940,6 @@ uint64_t helper_ld_asi(target_ulong addr, int
asi, int size, int sign)
case 0x31: // Turbosparc RAM snoop
case 0x32: // Turbosparc page table descriptor diagnostic
case 0x39: /* data cache diagnostic register */
- case 0x4c: /* SuperSPARC MMU Breakpoint Action register */
ret = 0;
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers */
@@ -1966,6 +1965,18 @@ uint64_t helper_ld_asi(target_ulong addr, int
asi, int size, int sign)
ret);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ ret = env->mmubpctrv;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ ret = env->mmubpctrc;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ ret = env->mmubpctrs;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ ret = env->mmubpaction;
+ break;
case 8: /* User code access, XXX */
default:
do_unassigned_access(addr, 0, 0, asi, size);
@@ -2304,7 +2315,6 @@ void helper_st_asi(target_ulong addr, uint64_t
val, int asi, int size)
// descriptor diagnostic
case 0x36: /* I-cache flash clear */
case 0x37: /* D-cache flash clear */
- case 0x4c: /* breakpoint action */
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers*/
{
@@ -2328,6 +2338,18 @@ void helper_st_asi(target_ulong addr, uint64_t
val, int asi, int size)
env->mmuregs[reg]);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ env->mmubpctrv = val & 0xffffffff;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ env->mmubpctrc = val & 0x3;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ env->mmubpctrs = val & 0x3;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ env->mmubpaction = val & 0x1fff;
+ break;
case 8: /* User code access, XXX */
case 9: /* Supervisor code access, XXX */
default:
--
1.6.2.4
[-- Attachment #2: 0001-Sparc32-dummy-implementation-of-MXCC-MMU-breakpoint-.patch --]
[-- Type: text/x-patch, Size: 5204 bytes --]
From 10044b92f0ba0b44771b5319a82ecabf177ebf8f Mon Sep 17 00:00:00 2001
Message-Id: <10044b92f0ba0b44771b5319a82ecabf177ebf8f.1308489625.git.blauwirbel@gmail.com>
From: Blue Swirl <blauwirbel@gmail.com>
Date: Sat, 18 Jun 2011 20:27:05 +0000
Subject: [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers
Add dummy registers for SuperSPARC MXCC MMU counter breakpoints, save
and load all MXCC registers.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
target-sparc/cpu.h | 4 +++-
target-sparc/machine.c | 26 ++++++++++++++++++++++++++
target-sparc/op_helper.c | 26 ++++++++++++++++++++++++--
3 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 320530e..a220bf4 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -403,6 +403,8 @@ typedef struct CPUSPARCState {
uint32_t mmuregs[32];
uint64_t mxccdata[4];
uint64_t mxccregs[8];
+ uint32_t mmubpctrv, mmubpctrc, mmubpctrs;
+ uint64_t mmubpaction;
uint64_t mmubpregs[4];
uint64_t prom_addr;
#endif
@@ -521,7 +523,7 @@ int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
#define cpu_signal_handler cpu_sparc_signal_handler
#define cpu_list sparc_cpu_list
-#define CPU_SAVE_VERSION 6
+#define CPU_SAVE_VERSION 7
/* MMU modes definitions */
#if defined (TARGET_SPARC64)
diff --git a/target-sparc/machine.c b/target-sparc/machine.c
index 752e431..bae23c5 100644
--- a/target-sparc/machine.c
+++ b/target-sparc/machine.c
@@ -45,6 +45,19 @@ void cpu_save(QEMUFile *f, void *opaque)
/* MMU */
for (i = 0; i < 32; i++)
qemu_put_be32s(f, &env->mmuregs[i]);
+ for (i = 0; i < 4; i++) {
+ qemu_put_be64s(f, &env->mxccdata[i]);
+ }
+ for (i = 0; i < 8; i++) {
+ qemu_put_be64s(f, &env->mxccregs[i]);
+ }
+ qemu_put_be32s(f, &env->mmubpctrv);
+ qemu_put_be32s(f, &env->mmubpctrc);
+ qemu_put_be32s(f, &env->mmubpctrs);
+ qemu_put_be64s(f, &env->mmubpaction);
+ for (i = 0; i < 4; i++) {
+ qemu_put_be64s(f, &env->mmubpregs[i]);
+ }
#else
qemu_put_be64s(f, &env->lsu);
for (i = 0; i < 16; i++) {
@@ -141,6 +154,19 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
/* MMU */
for (i = 0; i < 32; i++)
qemu_get_be32s(f, &env->mmuregs[i]);
+ for (i = 0; i < 4; i++) {
+ qemu_get_be64s(f, &env->mxccdata[i]);
+ }
+ for (i = 0; i < 8; i++) {
+ qemu_get_be64s(f, &env->mxccregs[i]);
+ }
+ qemu_get_be32s(f, &env->mmubpctrv);
+ qemu_get_be32s(f, &env->mmubpctrc);
+ qemu_get_be32s(f, &env->mmubpctrs);
+ qemu_get_be64s(f, &env->mmubpaction);
+ for (i = 0; i < 4; i++) {
+ qemu_get_be64s(f, &env->mmubpregs[i]);
+ }
#else
qemu_get_be64s(f, &env->lsu);
for (i = 0; i < 16; i++) {
diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index b38691e..e9cc1f5 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -1940,7 +1940,6 @@ uint64_t helper_ld_asi(target_ulong addr, int asi, int size, int sign)
case 0x31: // Turbosparc RAM snoop
case 0x32: // Turbosparc page table descriptor diagnostic
case 0x39: /* data cache diagnostic register */
- case 0x4c: /* SuperSPARC MMU Breakpoint Action register */
ret = 0;
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers */
@@ -1966,6 +1965,18 @@ uint64_t helper_ld_asi(target_ulong addr, int asi, int size, int sign)
ret);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ ret = env->mmubpctrv;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ ret = env->mmubpctrc;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ ret = env->mmubpctrs;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ ret = env->mmubpaction;
+ break;
case 8: /* User code access, XXX */
default:
do_unassigned_access(addr, 0, 0, asi, size);
@@ -2304,7 +2315,6 @@ void helper_st_asi(target_ulong addr, uint64_t val, int asi, int size)
// descriptor diagnostic
case 0x36: /* I-cache flash clear */
case 0x37: /* D-cache flash clear */
- case 0x4c: /* breakpoint action */
break;
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers*/
{
@@ -2328,6 +2338,18 @@ void helper_st_asi(target_ulong addr, uint64_t val, int asi, int size)
env->mmuregs[reg]);
}
break;
+ case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */
+ env->mmubpctrv = val & 0xffffffff;
+ break;
+ case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */
+ env->mmubpctrc = val & 0x3;
+ break;
+ case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */
+ env->mmubpctrs = val & 0x3;
+ break;
+ case 0x4c: /* SuperSPARC MMU Breakpoint Action */
+ env->mmubpaction = val & 0x1fff;
+ break;
case 8: /* User code access, XXX */
case 9: /* Supervisor code access, XXX */
default:
--
1.7.2.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-06-19 13:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-18 21:45 [Qemu-devel] [PATCH] Sparc32: dummy implementation of MXCC MMU breakpoint registers Blue Swirl
2011-06-18 22:11 ` Peter Maydell
2011-06-18 22:41 ` Robert Reif
-- strict thread matches above, loose matches on Subject: below --
2011-06-19 13:22 Blue Swirl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).