Improved namespacing for MMR record-style data type

This commit is contained in:
Adrian Herrera
2016-04-07 22:34:07 +10:00
parent 8cb77a2a93
commit 8f43bf7ffc

View File

@ -27,10 +27,10 @@ import Unicorn.Internal.Core (Reg)
-- | Memory-managemen Register for instructions IDTR, GDTR, LDTR, TR. -- | Memory-managemen Register for instructions IDTR, GDTR, LDTR, TR.
-- Borrow from SegmentCache in qemu/target-i386/cpu.h -- Borrow from SegmentCache in qemu/target-i386/cpu.h
data Mmr = Mmr { data Mmr = Mmr {
selector :: Word16, -- ^ Not used by GDTR and IDTR mmrSelector :: Word16, -- ^ Not used by GDTR and IDTR
base :: Word64, -- ^ Handle 32 or 64 bit CPUs mmrBase :: Word64, -- ^ Handle 32 or 64 bit CPUs
limit :: Word32, mmrLimit :: Word32,
flags :: Word32 -- ^ Not used by GDTR and IDTR mmrFlags :: Word32 -- ^ Not used by GDTR and IDTR
} }
instance Storable Mmr where instance Storable Mmr where
@ -41,10 +41,10 @@ instance Storable Mmr where
<*> liftA fromIntegral ({# get uc_x86_mmr->limit #} p) <*> liftA fromIntegral ({# get uc_x86_mmr->limit #} p)
<*> liftA fromIntegral ({# get uc_x86_mmr->flags #} p) <*> liftA fromIntegral ({# get uc_x86_mmr->flags #} p)
poke p mmr = do poke p mmr = do
{# set uc_x86_mmr.selector #} p (fromIntegral $ selector mmr) {# set uc_x86_mmr.selector #} p (fromIntegral $ mmrSelector mmr)
{# set uc_x86_mmr.base #} p (fromIntegral $ base mmr) {# set uc_x86_mmr.base #} p (fromIntegral $ mmrBase mmr)
{# set uc_x86_mmr.limit #} p (fromIntegral $ limit mmr) {# set uc_x86_mmr.limit #} p (fromIntegral $ mmrLimit mmr)
{# set uc_x86_mmr.flags #} p (fromIntegral $ flags mmr) {# set uc_x86_mmr.flags #} p (fromIntegral $ mmrFlags mmr)
-- | X86 registers. -- | X86 registers.
{# enum uc_x86_reg as Register {# enum uc_x86_reg as Register