arch/mips/isa/bitfields.isa:
add RS_SRL bitfield ...these must be set to 0 for a SRL instruction
arch/mips/isa/decoder.isa:
Make unimplemented instructions Fail instead of just Warn
Edits to SRA & SRAV instructions
Implement CFC1 instructions
Unaligned Memory Access Support (Maybe Not fully functional yet)
Enforce a more strict decode policy (in terms of different bitfields set to 0 on certain instructions)
arch/mips/isa/formats/branch.isa:
Fix disassembly
arch/mips/isa/formats/int.isa:
Add sign extend Immediate and zero extend Immediate to Int class.
Probably a bit unnecessary in the long run since these manipulations could
be done in the actually instruction instead of keep a int value
arch/mips/isa/formats/mem.isa:
Comment/Remove out split-memory access code... revisit this after SimpleCPU works
arch/mips/isa/formats/unimp.isa:
Add inst2string function to Unimplemented panic. PRints out the instruction
binary to help in debuggin
arch/mips/isa/formats/unknown.isa:
define inst2string function , use in unknown disassembly and panic function
arch/mips/isa/operands.isa:
Make "Mem" default to a unsigned word since this is MIPS32
arch/mips/isa_traits.hh:
change return values to 32 instead of 64
arch/mips/linux_process.cc:
assign some syscalls to the right functions
cpu/static_inst.hh:
more debug functions for MIPS (these will be move to the mips directory soon)
mem/page_table.cc:
mem/page_table.hh:
toward a better implementation for unaligned memory access
mem/request.hh:
NO ALIGN FAULT flag added to support unaligned memory access
sim/syscall_emul.cc:
additional SyscallVerbose comments
--HG--
extra : convert_revision : 1987d80c9f4ede507f1f0148435e0bee97d2428c
34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
def operand_types {{
|
|
'sb' : ('signed int', 8),
|
|
'ub' : ('unsigned int', 8),
|
|
'sh' : ('signed int', 16),
|
|
'uh' : ('unsigned int', 16),
|
|
'sw' : ('signed int', 32),
|
|
'uw' : ('unsigned int', 32),
|
|
'sd' : ('signed int', 64),
|
|
'ud' : ('unsigned int', 64),
|
|
'sf' : ('float', 32),
|
|
'df' : ('float', 64),
|
|
'qf' : ('float', 128)
|
|
}};
|
|
|
|
def operands {{
|
|
'Rd': ('IntReg', 'uw', 'RD', 'IsInteger', 1),
|
|
'Rs': ('IntReg', 'uw', 'RS', 'IsInteger', 2),
|
|
'Rt': ('IntReg', 'uw', 'RT', 'IsInteger', 3),
|
|
'r31': ('IntReg', 'uw','R31','IsInteger', 4),
|
|
'R0': ('IntReg', 'uw','R0', 'IsInteger', 5),
|
|
|
|
'IntImm': ('IntReg', 'uw', 'INTIMM', 'IsInteger', 3),
|
|
|
|
'Fd': ('FloatReg', 'sf', 'FD', 'IsFloating', 1),
|
|
'Fs': ('FloatReg', 'sf', 'FS', 'IsFloating', 2),
|
|
'Ft': ('FloatReg', 'sf', 'FT', 'IsFloating', 3),
|
|
'Fr': ('FloatReg', 'sf', 'FR', 'IsFloating', 3),
|
|
|
|
'Mem': ('Mem', 'uw', None, ('IsMemRef', 'IsLoad', 'IsStore'), 4),
|
|
|
|
'NPC': ('NPC', 'uw', None, ( None, None, 'IsControl' ), 4),
|
|
'NNPC':('NNPC', 'uw', None, ( None, None, 'IsControl' ), 4)
|
|
}};
|