diff options
author | Jiri Gaisler <jiri@gaisler.se> | 2020-11-27 16:18:25 +0100 |
---|---|---|
committer | Jiri Gaisler <jiri@gaisler.se> | 2020-11-27 16:18:25 +0100 |
commit | 416cfac77679c69ea79ecc207f72a4693186a6ca (patch) | |
tree | 74f5223bf03e48b406e8c24d35870d89349166a0 /sparc.c | |
parent | Add networking support using host tap device (diff) | |
download | sis-416cfac77679c69ea79ecc207f72a4693186a6ca.tar.bz2 |
Add %asr22/23 support to leon32.24
Diffstat (limited to 'sparc.c')
-rw-r--r-- | sparc.c | 25 |
1 files changed, 19 insertions, 6 deletions
@@ -845,17 +845,27 @@ sparc_dispatch_instruction (sregs) *rdd = sregs->psr; break; case RDY: - *rdd = sregs->y; if (cputype == CPU_LEON3) { - int rs1_is_asr = (sregs->inst >> 14) & 0x1f; - if (0 == rs1_is_asr) - *rdd = sregs->y; - else if (17 == rs1_is_asr) + rs1 = (sregs->inst >> 14) & 0x1f; + switch (rs1) { + case 0: + *rdd = sregs->y; + break; + case 17: *rdd = sregs->asr17; + break; + case 22: + *rdd = (uint32) (sregs->simtime >> 32); + break; + case 23: + *rdd = (uint32) (sregs->simtime & 0xffffffff); + break; } } + else + *rdd = sregs->y; break; case RDWIM: if (!(sregs->psr & PSR_S)) @@ -2058,8 +2068,11 @@ sparc_display_ctrl (struct pstate *sregs) static void sparc_display_special (struct pstate *sregs) { - printf ("\n cache ctrl : %08X\n asr17 : %08X\n\n", + printf ("\n cache ctrl : %08X\n asr17 : %08X", sregs->cache_ctrl, sregs->asr17); + printf ("\n asr22 : %08X\n asr23 : %08X\n\n", + (uint32) (sregs->simtime >> 32), + (uint32) sregs->simtime & 0xffffffff); } static void |