Fixes for full-system call_pal instruction.

arch/alpha/alpha_memory.cc:
    Rename md_mode_type to mode_type.
arch/alpha/ev5.cc:
    simPalCheck() only gets called on correct path now, so
    there's no need to test misspeculating().
arch/alpha/isa_desc:
    Get privileged call_pall detection right this time (I hope).
    ExecContext::simPalCheck() and Annotate::Callpal() are now
    called only on non-speculative executions... this should fix
    the bogus pal-call stats we've been seeing (since these are
    incremented in simPalCheck()).
    Also check for invalid call_pall function codes.

--HG--
extra : convert_revision : 465d6724884007d3fa066d14cd5e6db0cd3954e1
This commit is contained in:
Steve Reinhardt
2003-12-15 21:06:09 -08:00
parent d0feece6e0
commit 2cd5e980d2
3 changed files with 44 additions and 24 deletions

View File

@@ -436,12 +436,12 @@ AlphaDtb::translate(MemReqPtr req, bool write) const
else
read_accesses++;
AlphaISA::md_mode_type mode =
(AlphaISA::md_mode_type)DTB_CM_CM(ipr[AlphaISA::IPR_DTB_CM]);
AlphaISA::mode_type mode =
(AlphaISA::mode_type)DTB_CM_CM(ipr[AlphaISA::IPR_DTB_CM]);
if (PC_PAL(pc)) {
mode = (req->flags & ALTMODE) ? (AlphaISA::md_mode_type)
(ALT_MODE_AM(ipr[AlphaISA::IPR_ALT_MODE]))
mode = (req->flags & ALTMODE) ?
(AlphaISA::mode_type)ALT_MODE_AM(ipr[AlphaISA::IPR_ALT_MODE])
: AlphaISA::mode_kernel;
}