Copyright | (c) Inokentiy Babushkin, 2016 |
---|---|
License | BSD3 |
Maintainer | Inokentiy Babushkin <inokentiy.babushkin@googlemail.com> |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
This module contains ARM specific datatypes and their respective Storable instances. Most of the types are used internally and can be looked up here. Some of them are currently unused, as the headers only define them as symbolic constants whose type is never used explicitly, which poses a problem for a memory-safe port to the Haskell language, this is about to get fixed in a future version.
Apart from that, because the module is generated using C2HS, some of the documentation is misplaced or rendered incorrectly, so if in doubt, read the source file.
- data ArmShifter
- data ArmConditionCode
- data ArmSysreg
- = ArmSysregInvalid
- | ArmSysregSpsrC
- | ArmSysregSpsrX
- | ArmSysregSpsrS
- | ArmSysregSpsrF
- | ArmSysregCpsrC
- | ArmSysregCpsrX
- | ArmSysregCpsrS
- | ArmSysregCpsrF
- | ArmSysregApsr
- | ArmSysregApsrG
- | ArmSysregApsrNzcvq
- | ArmSysregApsrNzcvqg
- | ArmSysregIapsr
- | ArmSysregIapsrG
- | ArmSysregIapsrNzcvqg
- | ArmSysregEapsr
- | ArmSysregEapsrG
- | ArmSysregEapsrNzcvqg
- | ArmSysregXpsr
- | ArmSysregXpsrG
- | ArmSysregXpsrNzcvqg
- | ArmSysregIpsr
- | ArmSysregEpsr
- | ArmSysregIepsr
- | ArmSysregMsp
- | ArmSysregPsp
- | ArmSysregPrimask
- | ArmSysregBasepri
- | ArmSysregBasepriMax
- | ArmSysregFaultmask
- | ArmSysregControl
- data ArmMemBarrier
- data ArmOpType
- data ArmSetendType
- data ArmCpsmodeType
- data ArmCpsflagType
- data ArmVectordataType
- = ArmVectordataInvalid
- | ArmVectordataI8
- | ArmVectordataI16
- | ArmVectordataI32
- | ArmVectordataI64
- | ArmVectordataS8
- | ArmVectordataS16
- | ArmVectordataS32
- | ArmVectordataS64
- | ArmVectordataU8
- | ArmVectordataU16
- | ArmVectordataU32
- | ArmVectordataU64
- | ArmVectordataP8
- | ArmVectordataF32
- | ArmVectordataF64
- | ArmVectordataF16f64
- | ArmVectordataF64f16
- | ArmVectordataF32f16
- | ArmVectordataF16f32
- | ArmVectordataF64f32
- | ArmVectordataF32f64
- | ArmVectordataS32f32
- | ArmVectordataU32f32
- | ArmVectordataF32s32
- | ArmVectordataF32u32
- | ArmVectordataF64s16
- | ArmVectordataF32s16
- | ArmVectordataF64s32
- | ArmVectordataS16f64
- | ArmVectordataS16f32
- | ArmVectordataS32f64
- | ArmVectordataU16f64
- | ArmVectordataU16f32
- | ArmVectordataU32f64
- | ArmVectordataF64u16
- | ArmVectordataF32u16
- | ArmVectordataF64u32
- data ArmOpMemStruct = ArmOpMemStruct {}
- data CsArmOpValue
- data CsArmOp = CsArmOp {
- vectorIndex :: Int32
- shift :: (ArmShifter, Word32)
- value :: CsArmOpValue
- subtracted :: Bool
- data CsArm = CsArm {}
- data ArmReg
- = ArmRegInvalid
- | ArmRegApsr
- | ArmRegApsrNzcv
- | ArmRegCpsr
- | ArmRegFpexc
- | ArmRegFpinst
- | ArmRegFpscr
- | ArmRegFpscrNzcv
- | ArmRegFpsid
- | ArmRegItstate
- | ArmRegLr
- | ArmRegR14
- | ArmRegPc
- | ArmRegR15
- | ArmRegSp
- | ArmRegR13
- | ArmRegSpsr
- | ArmRegD0
- | ArmRegD1
- | ArmRegD2
- | ArmRegD3
- | ArmRegD4
- | ArmRegD5
- | ArmRegD6
- | ArmRegD7
- | ArmRegD8
- | ArmRegD9
- | ArmRegD10
- | ArmRegD11
- | ArmRegD12
- | ArmRegD13
- | ArmRegD14
- | ArmRegD15
- | ArmRegD16
- | ArmRegD17
- | ArmRegD18
- | ArmRegD19
- | ArmRegD20
- | ArmRegD21
- | ArmRegD22
- | ArmRegD23
- | ArmRegD24
- | ArmRegD25
- | ArmRegD26
- | ArmRegD27
- | ArmRegD28
- | ArmRegD29
- | ArmRegD30
- | ArmRegD31
- | ArmRegFpinst2
- | ArmRegMvfr0
- | ArmRegMvfr1
- | ArmRegMvfr2
- | ArmRegQ0
- | ArmRegQ1
- | ArmRegQ2
- | ArmRegQ3
- | ArmRegQ4
- | ArmRegQ5
- | ArmRegQ6
- | ArmRegQ7
- | ArmRegQ8
- | ArmRegQ9
- | ArmRegQ10
- | ArmRegQ11
- | ArmRegQ12
- | ArmRegQ13
- | ArmRegQ14
- | ArmRegQ15
- | ArmRegR0
- | ArmRegR1
- | ArmRegR2
- | ArmRegR3
- | ArmRegR4
- | ArmRegR5
- | ArmRegR6
- | ArmRegR7
- | ArmRegR8
- | ArmRegR9
- | ArmRegSb
- | ArmRegR10
- | ArmRegSl
- | ArmRegR11
- | ArmRegFp
- | ArmRegR12
- | ArmRegIp
- | ArmRegS0
- | ArmRegS1
- | ArmRegS2
- | ArmRegS3
- | ArmRegS4
- | ArmRegS5
- | ArmRegS6
- | ArmRegS7
- | ArmRegS8
- | ArmRegS9
- | ArmRegS10
- | ArmRegS11
- | ArmRegS12
- | ArmRegS13
- | ArmRegS14
- | ArmRegS15
- | ArmRegS16
- | ArmRegS17
- | ArmRegS18
- | ArmRegS19
- | ArmRegS20
- | ArmRegS21
- | ArmRegS22
- | ArmRegS23
- | ArmRegS24
- | ArmRegS25
- | ArmRegS26
- | ArmRegS27
- | ArmRegS28
- | ArmRegS29
- | ArmRegS30
- | ArmRegS31
- | ArmRegEnding
- data ArmInsn
- = ArmInsInvalid
- | ArmInsAdc
- | ArmInsAdd
- | ArmInsAdr
- | ArmInsAesd
- | ArmInsAese
- | ArmInsAesimc
- | ArmInsAesmc
- | ArmInsAnd
- | ArmInsBfc
- | ArmInsBfi
- | ArmInsBic
- | ArmInsBkpt
- | ArmInsBl
- | ArmInsBlx
- | ArmInsBx
- | ArmInsBxj
- | ArmInsB
- | ArmInsCdp
- | ArmInsCdp2
- | ArmInsClrex
- | ArmInsClz
- | ArmInsCmn
- | ArmInsCmp
- | ArmInsCps
- | ArmInsCrc32b
- | ArmInsCrc32cb
- | ArmInsCrc32ch
- | ArmInsCrc32cw
- | ArmInsCrc32h
- | ArmInsCrc32w
- | ArmInsDbg
- | ArmInsDmb
- | ArmInsDsb
- | ArmInsEor
- | ArmInsVmov
- | ArmInsFldmdbx
- | ArmInsFldmiax
- | ArmInsVmrs
- | ArmInsFstmdbx
- | ArmInsFstmiax
- | ArmInsHint
- | ArmInsHlt
- | ArmInsIsb
- | ArmInsLda
- | ArmInsLdab
- | ArmInsLdaex
- | ArmInsLdaexb
- | ArmInsLdaexd
- | ArmInsLdaexh
- | ArmInsLdah
- | ArmInsLdc2l
- | ArmInsLdc2
- | ArmInsLdcl
- | ArmInsLdc
- | ArmInsLdmda
- | ArmInsLdmdb
- | ArmInsLdm
- | ArmInsLdmib
- | ArmInsLdrbt
- | ArmInsLdrb
- | ArmInsLdrd
- | ArmInsLdrex
- | ArmInsLdrexb
- | ArmInsLdrexd
- | ArmInsLdrexh
- | ArmInsLdrh
- | ArmInsLdrht
- | ArmInsLdrsb
- | ArmInsLdrsbt
- | ArmInsLdrsh
- | ArmInsLdrsht
- | ArmInsLdrt
- | ArmInsLdr
- | ArmInsMcr
- | ArmInsMcr2
- | ArmInsMcrr
- | ArmInsMcrr2
- | ArmInsMla
- | ArmInsMls
- | ArmInsMov
- | ArmInsMovt
- | ArmInsMovw
- | ArmInsMrc
- | ArmInsMrc2
- | ArmInsMrrc
- | ArmInsMrrc2
- | ArmInsMrs
- | ArmInsMsr
- | ArmInsMul
- | ArmInsMvn
- | ArmInsOrr
- | ArmInsPkhbt
- | ArmInsPkhtb
- | ArmInsPldw
- | ArmInsPld
- | ArmInsPli
- | ArmInsQadd
- | ArmInsQadd16
- | ArmInsQadd8
- | ArmInsQasx
- | ArmInsQdadd
- | ArmInsQdsub
- | ArmInsQsax
- | ArmInsQsub
- | ArmInsQsub16
- | ArmInsQsub8
- | ArmInsRbit
- | ArmInsRev
- | ArmInsRev16
- | ArmInsRevsh
- | ArmInsRfeda
- | ArmInsRfedb
- | ArmInsRfeia
- | ArmInsRfeib
- | ArmInsRsb
- | ArmInsRsc
- | ArmInsSadd16
- | ArmInsSadd8
- | ArmInsSasx
- | ArmInsSbc
- | ArmInsSbfx
- | ArmInsSdiv
- | ArmInsSel
- | ArmInsSetend
- | ArmInsSha1c
- | ArmInsSha1h
- | ArmInsSha1m
- | ArmInsSha1p
- | ArmInsSha1su0
- | ArmInsSha1su1
- | ArmInsSha256h
- | ArmInsSha256h2
- | ArmInsSha256su0
- | ArmInsSha256su1
- | ArmInsShadd16
- | ArmInsShadd8
- | ArmInsShasx
- | ArmInsShsax
- | ArmInsShsub16
- | ArmInsShsub8
- | ArmInsSmc
- | ArmInsSmlabb
- | ArmInsSmlabt
- | ArmInsSmlad
- | ArmInsSmladx
- | ArmInsSmlal
- | ArmInsSmlalbb
- | ArmInsSmlalbt
- | ArmInsSmlald
- | ArmInsSmlaldx
- | ArmInsSmlaltb
- | ArmInsSmlaltt
- | ArmInsSmlatb
- | ArmInsSmlatt
- | ArmInsSmlawb
- | ArmInsSmlawt
- | ArmInsSmlsd
- | ArmInsSmlsdx
- | ArmInsSmlsld
- | ArmInsSmlsldx
- | ArmInsSmmla
- | ArmInsSmmlar
- | ArmInsSmmls
- | ArmInsSmmlsr
- | ArmInsSmmul
- | ArmInsSmmulr
- | ArmInsSmuad
- | ArmInsSmuadx
- | ArmInsSmulbb
- | ArmInsSmulbt
- | ArmInsSmull
- | ArmInsSmultb
- | ArmInsSmultt
- | ArmInsSmulwb
- | ArmInsSmulwt
- | ArmInsSmusd
- | ArmInsSmusdx
- | ArmInsSrsda
- | ArmInsSrsdb
- | ArmInsSrsia
- | ArmInsSrsib
- | ArmInsSsat
- | ArmInsSsat16
- | ArmInsSsax
- | ArmInsSsub16
- | ArmInsSsub8
- | ArmInsStc2l
- | ArmInsStc2
- | ArmInsStcl
- | ArmInsStc
- | ArmInsStl
- | ArmInsStlb
- | ArmInsStlex
- | ArmInsStlexb
- | ArmInsStlexd
- | ArmInsStlexh
- | ArmInsStlh
- | ArmInsStmda
- | ArmInsStmdb
- | ArmInsStm
- | ArmInsStmib
- | ArmInsStrbt
- | ArmInsStrb
- | ArmInsStrd
- | ArmInsStrex
- | ArmInsStrexb
- | ArmInsStrexd
- | ArmInsStrexh
- | ArmInsStrh
- | ArmInsStrht
- | ArmInsStrt
- | ArmInsStr
- | ArmInsSub
- | ArmInsSvc
- | ArmInsSwp
- | ArmInsSwpb
- | ArmInsSxtab
- | ArmInsSxtab16
- | ArmInsSxtah
- | ArmInsSxtb
- | ArmInsSxtb16
- | ArmInsSxth
- | ArmInsTeq
- | ArmInsTrap
- | ArmInsTst
- | ArmInsUadd16
- | ArmInsUadd8
- | ArmInsUasx
- | ArmInsUbfx
- | ArmInsUdf
- | ArmInsUdiv
- | ArmInsUhadd16
- | ArmInsUhadd8
- | ArmInsUhasx
- | ArmInsUhsax
- | ArmInsUhsub16
- | ArmInsUhsub8
- | ArmInsUmaal
- | ArmInsUmlal
- | ArmInsUmull
- | ArmInsUqadd16
- | ArmInsUqadd8
- | ArmInsUqasx
- | ArmInsUqsax
- | ArmInsUqsub16
- | ArmInsUqsub8
- | ArmInsUsad8
- | ArmInsUsada8
- | ArmInsUsat
- | ArmInsUsat16
- | ArmInsUsax
- | ArmInsUsub16
- | ArmInsUsub8
- | ArmInsUxtab
- | ArmInsUxtab16
- | ArmInsUxtah
- | ArmInsUxtb
- | ArmInsUxtb16
- | ArmInsUxth
- | ArmInsVabal
- | ArmInsVaba
- | ArmInsVabdl
- | ArmInsVabd
- | ArmInsVabs
- | ArmInsVacge
- | ArmInsVacgt
- | ArmInsVadd
- | ArmInsVaddhn
- | ArmInsVaddl
- | ArmInsVaddw
- | ArmInsVand
- | ArmInsVbic
- | ArmInsVbif
- | ArmInsVbit
- | ArmInsVbsl
- | ArmInsVceq
- | ArmInsVcge
- | ArmInsVcgt
- | ArmInsVcle
- | ArmInsVcls
- | ArmInsVclt
- | ArmInsVclz
- | ArmInsVcmp
- | ArmInsVcmpe
- | ArmInsVcnt
- | ArmInsVcvta
- | ArmInsVcvtb
- | ArmInsVcvt
- | ArmInsVcvtm
- | ArmInsVcvtn
- | ArmInsVcvtp
- | ArmInsVcvtt
- | ArmInsVdiv
- | ArmInsVdup
- | ArmInsVeor
- | ArmInsVext
- | ArmInsVfma
- | ArmInsVfms
- | ArmInsVfnma
- | ArmInsVfnms
- | ArmInsVhadd
- | ArmInsVhsub
- | ArmInsVld1
- | ArmInsVld2
- | ArmInsVld3
- | ArmInsVld4
- | ArmInsVldmdb
- | ArmInsVldmia
- | ArmInsVldr
- | ArmInsVmaxnm
- | ArmInsVmax
- | ArmInsVminnm
- | ArmInsVmin
- | ArmInsVmla
- | ArmInsVmlal
- | ArmInsVmls
- | ArmInsVmlsl
- | ArmInsVmovl
- | ArmInsVmovn
- | ArmInsVmsr
- | ArmInsVmul
- | ArmInsVmull
- | ArmInsVmvn
- | ArmInsVneg
- | ArmInsVnmla
- | ArmInsVnmls
- | ArmInsVnmul
- | ArmInsVorn
- | ArmInsVorr
- | ArmInsVpadal
- | ArmInsVpaddl
- | ArmInsVpadd
- | ArmInsVpmax
- | ArmInsVpmin
- | ArmInsVqabs
- | ArmInsVqadd
- | ArmInsVqdmlal
- | ArmInsVqdmlsl
- | ArmInsVqdmulh
- | ArmInsVqdmull
- | ArmInsVqmovun
- | ArmInsVqmovn
- | ArmInsVqneg
- | ArmInsVqrdmulh
- | ArmInsVqrshl
- | ArmInsVqrshrn
- | ArmInsVqrshrun
- | ArmInsVqshl
- | ArmInsVqshlu
- | ArmInsVqshrn
- | ArmInsVqshrun
- | ArmInsVqsub
- | ArmInsVraddhn
- | ArmInsVrecpe
- | ArmInsVrecps
- | ArmInsVrev16
- | ArmInsVrev32
- | ArmInsVrev64
- | ArmInsVrhadd
- | ArmInsVrinta
- | ArmInsVrintm
- | ArmInsVrintn
- | ArmInsVrintp
- | ArmInsVrintr
- | ArmInsVrintx
- | ArmInsVrintz
- | ArmInsVrshl
- | ArmInsVrshrn
- | ArmInsVrshr
- | ArmInsVrsqrte
- | ArmInsVrsqrts
- | ArmInsVrsra
- | ArmInsVrsubhn
- | ArmInsVseleq
- | ArmInsVselge
- | ArmInsVselgt
- | ArmInsVselvs
- | ArmInsVshll
- | ArmInsVshl
- | ArmInsVshrn
- | ArmInsVshr
- | ArmInsVsli
- | ArmInsVsqrt
- | ArmInsVsra
- | ArmInsVsri
- | ArmInsVst1
- | ArmInsVst2
- | ArmInsVst3
- | ArmInsVst4
- | ArmInsVstmdb
- | ArmInsVstmia
- | ArmInsVstr
- | ArmInsVsub
- | ArmInsVsubhn
- | ArmInsVsubl
- | ArmInsVsubw
- | ArmInsVswp
- | ArmInsVtbl
- | ArmInsVtbx
- | ArmInsVcvtr
- | ArmInsVtrn
- | ArmInsVtst
- | ArmInsVuzp
- | ArmInsVzip
- | ArmInsAddw
- | ArmInsAsr
- | ArmInsDcps1
- | ArmInsDcps2
- | ArmInsDcps3
- | ArmInsIt
- | ArmInsLsl
- | ArmInsLsr
- | ArmInsAsrs
- | ArmInsLsrs
- | ArmInsOrn
- | ArmInsRor
- | ArmInsRrx
- | ArmInsSubs
- | ArmInsSubw
- | ArmInsTbb
- | ArmInsTbh
- | ArmInsCbnz
- | ArmInsCbz
- | ArmInsMovs
- | ArmInsPop
- | ArmInsPush
- | ArmInsNop
- | ArmInsYield
- | ArmInsWfe
- | ArmInsWfi
- | ArmInsSev
- | ArmInsSevl
- | ArmInsVpush
- | ArmInsVpop
- | ArmInsEnding
- data ArmInsnGroup
- = ArmGrpInvalid
- | ArmGrpJump
- | ArmGrpCrypto
- | ArmGrpDatabarrier
- | ArmGrpDivide
- | ArmGrpFparmv8
- | ArmGrpMultpro
- | ArmGrpNeon
- | ArmGrpT2extractpack
- | ArmGrpThumb2dsp
- | ArmGrpTrustzone
- | ArmGrpV4t
- | ArmGrpV5t
- | ArmGrpV5te
- | ArmGrpV6
- | ArmGrpV6t2
- | ArmGrpV7
- | ArmGrpV8
- | ArmGrpVfp2
- | ArmGrpVfp3
- | ArmGrpVfp4
- | ArmGrpArm
- | ArmGrpMclass
- | ArmGrpNotmclass
- | ArmGrpThumb
- | ArmGrpThumb1only
- | ArmGrpThumb2
- | ArmGrpPrev8
- | ArmGrpFpvmlx
- | ArmGrpMulops
- | ArmGrpCrc
- | ArmGrpDpvfp
- | ArmGrpV6m
- | ArmGrpEnding
Documentation
data ArmShifter Source
ARM shift type
data ArmConditionCode Source
ARM condition code
system registers
data ArmMemBarrier Source
memory barrier operands (map directly to the 4-bit encoding of the option field for Memory Barrier operations, when given as an integer)
operand type for instruction's operands
data ArmSetendType Source
operand type for SETEND instruction
Bounded ArmSetendType Source | |
Enum ArmSetendType Source | operand type for SETEND instruction |
Eq ArmSetendType Source | |
Show ArmSetendType Source |
data ArmCpsmodeType Source
data ArmCpsflagType Source
Bounded ArmCpsflagType Source | |
Enum ArmCpsflagType Source | memory access operands
associated with |
Eq ArmCpsflagType Source | |
Show ArmCpsflagType Source |
data ArmVectordataType Source
data type for elements of vector instructions
data CsArmOpValue Source
possible operand types (corresponding to the tagged union in the C header)
Reg Word32 | register value for |
Sysreg Word32 | register value for |
Imm Int32 | immediate value for |
Cimm Int32 | immediate value for |
Pimm Int32 | immediate value for |
Fp Double | floating point value for |
Mem ArmOpMemStruct | base,index,scale,disp value for
|
Setend ArmSetendType | SETEND instruction's operand type |
Undefined | invalid operand value, for |
instruction operands
CsArmOp | |
|
instruction datatype
CsArm | |
|
ARM registers
ARM instructions
data ArmInsnGroup Source
ARM instruction groups