Commit c99657d30329b5c296a5f998f1a05d1d10aa8e31

Authored by blueswir1
1 parent b158a785

Implement some UA2007 block ASIs

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5328 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 6 additions and 0 deletions
target-sparc/op_helper.c
@@ -1499,6 +1499,8 @@ uint64_t helper_ld_asi(target_ulong addr, int asi, int size, int sign) @@ -1499,6 +1499,8 @@ uint64_t helper_ld_asi(target_ulong addr, int asi, int size, int sign)
1499 case 0x18: // As if user primary LE 1499 case 0x18: // As if user primary LE
1500 case 0x80: // Primary 1500 case 0x80: // Primary
1501 case 0x88: // Primary LE 1501 case 0x88: // Primary LE
  1502 + case 0xe2: // UA2007 Primary block init
  1503 + case 0xe3: // UA2007 Secondary block init
1502 if ((asi & 0x80) && (env->pstate & PS_PRIV)) { 1504 if ((asi & 0x80) && (env->pstate & PS_PRIV)) {
1503 if ((env->def->features & CPU_FEATURE_HYPV) 1505 if ((env->def->features & CPU_FEATURE_HYPV)
1504 && env->hpstate & HS_PRIV) { 1506 && env->hpstate & HS_PRIV) {
@@ -1771,6 +1773,8 @@ void helper_st_asi(target_ulong addr, target_ulong val, int asi, int size) @@ -1771,6 +1773,8 @@ void helper_st_asi(target_ulong addr, target_ulong val, int asi, int size)
1771 case 0x18: // As if user primary LE 1773 case 0x18: // As if user primary LE
1772 case 0x80: // Primary 1774 case 0x80: // Primary
1773 case 0x88: // Primary LE 1775 case 0x88: // Primary LE
  1776 + case 0xe2: // UA2007 Primary block init
  1777 + case 0xe3: // UA2007 Secondary block init
1774 if ((asi & 0x80) && (env->pstate & PS_PRIV)) { 1778 if ((asi & 0x80) && (env->pstate & PS_PRIV)) {
1775 if ((env->def->features & CPU_FEATURE_HYPV) 1779 if ((env->def->features & CPU_FEATURE_HYPV)
1776 && env->hpstate & HS_PRIV) { 1780 && env->hpstate & HS_PRIV) {
@@ -2146,6 +2150,8 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd) @@ -2146,6 +2150,8 @@ void helper_stf_asi(target_ulong addr, int asi, int size, int rd)
2146 2150
2147 helper_check_align(addr, 3); 2151 helper_check_align(addr, 3);
2148 switch (asi) { 2152 switch (asi) {
  2153 + case 0xe0: // UA2007 Block commit store primary (cache flush)
  2154 + case 0xe1: // UA2007 Block commit store secondary (cache flush)
2149 case 0xf0: // Block store primary 2155 case 0xf0: // Block store primary
2150 case 0xf1: // Block store secondary 2156 case 0xf1: // Block store secondary
2151 case 0xf8: // Block store primary LE 2157 case 0xf8: // Block store primary LE