Commit Graph

30 Commits

Author SHA1 Message Date
Tristan Ravitch
2ec88811c5 Add special purpose registers to the definition of 'RegisterInfo' 2017-10-03 16:37:01 -07:00
Tristan Ravitch
171cc0d5ca Remove an unused module 2017-10-03 16:31:41 -07:00
Tristan Ravitch
4a8828429c Implement 'RegisterInfo' for PPCReg 2017-10-03 16:31:16 -07:00
Tristan Ravitch
dc261436c7 Generalize the type of PPCReg
The width of a GPR was formerly fixed to 64 bits.  It now reflects the actual arch.
2017-10-03 13:40:11 -07:00
Tristan Ravitch
5e136dceec Let PPCGenerator report errors
It doesn't right now, but the translation from semantics to macaw will have some
opportunities around invalid encodings.
2017-10-03 13:39:59 -07:00
Tristan Ravitch
19b65973fc Apply the state transformer
Committing now to experiment with adding failure modes to PPCGenerator
2017-10-03 13:23:20 -07:00
Tristan Ravitch
620b6f5980 Plumb through a parameter for the semantics lookup function
This is the function that will be generated via TH for PPC32 and PPC64.
2017-10-03 11:55:40 -07:00
Tristan Ravitch
6ed9d0d45d Simplify more type variables and implement the error throwing function for the disassembler
We had two different state thread parameters: s and ids.  We only need one (for
now), so unify them.
2017-10-03 11:09:23 -07:00
Tristan Ravitch
7aadfdf373 Remove a literal width of 64
That should have been a function of the architecture
2017-10-03 10:31:06 -07:00
Tristan Ravitch
083f9b4fa1 Remove a type parameter
We don't need the separate w - it is just a function (ArchAddrWidth) of the architecture.
2017-10-03 09:36:41 -07:00
Tristan Ravitch
d5c5d40ddb Add more disassembly infrastructure 2017-10-02 17:32:59 -07:00
Tristan Ravitch
7869f0e6c7 More work on disassemble 2017-10-02 14:29:15 -07:00
Tristan Ravitch
385bff0c4d Move the generator monad into its own module 2017-10-02 14:17:36 -07:00
Tristan Ravitch
4b6b82cd13 Flesh out disassembleFn a bit more 2017-10-02 13:35:51 -07:00
Tristan Ravitch
20e5b5f00d Add some type instance declarations for ppc32 and ppc64 2017-10-02 13:35:04 -07:00
Tristan Ravitch
90a9c5ff65 Generalize the architecture info def
Now we can use the same infrastructure for PPC32 and PPC64.  There might be some
rough edges, but we can work around those with type functions.

This change also adds an implementation for the preserved registers across
system calls for macaw.
2017-10-02 11:44:46 -07:00
Tristan Ravitch
4d9c7cd028 Split up the functions that will comprise ppc_linux_info 2017-10-02 11:19:34 -07:00
Tristan Ravitch
1f1a6d8561 Abstract the stubs to work for ppc32 and ppc64 2017-10-02 10:59:40 -07:00
Tristan Ravitch
61218ca31d Add stubs for most of the architecture info functions 2017-10-02 10:54:10 -07:00
Tristan Ravitch
45f08a2036 Fill in the endianness of the arch info 2017-10-02 10:37:44 -07:00
Tristan Ravitch
c997e2dada Use explicit exports for PPCReg 2017-10-02 10:32:58 -07:00
Tristan Ravitch
6b967e1e8a Fill out the fields of ppc_linux_info 2017-10-02 10:32:05 -07:00
Tristan Ravitch
cdd9647db9 Simplify some helpers in macaw-ppc
Use the MonadState combinators and a lift instead of explicitly wrapping
monadic actions.
2017-10-02 10:27:12 -07:00
Tristan Ravitch
202a95b959 Re-use the PPC arch tag (specifically, PPC64) from semmc-ppc 2017-10-02 10:26:51 -07:00
Tristan Ravitch
8820b01805 Depend on semmc/semmc-ppc and enable warnings 2017-10-02 10:26:39 -07:00
Tristan Ravitch
07ff647dcf Add some missing instances for PPCReg 2017-10-02 09:40:17 -07:00
Ben Selfridge
7a443bfe99 added a few more functions for PPCGenerator 2017-09-29 17:35:29 -07:00
Ben Selfridge
b234b673f9 Added addStmt to PPCGenerator monad 2017-09-29 15:37:41 -07:00
Ben Selfridge
65a7e8c17c second commit 2017-09-29 09:37:45 -07:00
Ben Selfridge
bf9b320e38 first commit 2017-08-28 15:48:55 -07:00