diff options
Diffstat (limited to 'decoder/source/ocsd_dcd_tree.cpp')
-rw-r--r-- | decoder/source/ocsd_dcd_tree.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/decoder/source/ocsd_dcd_tree.cpp b/decoder/source/ocsd_dcd_tree.cpp index 49ceb92..d2c5105 100644 --- a/decoder/source/ocsd_dcd_tree.cpp +++ b/decoder/source/ocsd_dcd_tree.cpp @@ -51,13 +51,14 @@ DecodeTree *DecodeTree::CreateDecodeTree(const ocsd_dcd_tree_src_t src_type, uin if(dcd_tree->initialise(src_type, formatterCfgFlags)) { s_trace_dcd_trees.push_back(dcd_tree); + s_instruction_decoder.envSetAA64_errOnBadOpcode(); } else { delete dcd_tree; dcd_tree = 0; } - } + } return dcd_tree; } @@ -195,9 +196,17 @@ ocsd_err_t DecodeTree::createMemAccMapper(memacc_mapper_t type /* = MEMACC_MAP_G // set the access interface if(m_default_mapper) { + bool enableCaching; + int cachePageSize, cachePageNum; + + m_created_mapper = true; setMemAccessI(m_default_mapper); m_default_mapper->setErrorLog(s_i_error_logger); + TrcMemAccCache::getenvMemaccCacheSizes(enableCaching, cachePageSize, cachePageNum); + if ((m_default_mapper->setCacheSizes(cachePageSize, cachePageNum) != OCSD_OK) || + (m_default_mapper->enableCaching(enableCaching) != OCSD_OK)) + destroyMemAccMapper(); } return (m_default_mapper != 0) ? OCSD_OK : OCSD_ERR_MEM; |