fc6b2cceb4
X86: Make fixed register operands ignore register index extensions from the REX prefix. The only cases where this was the correct behavior are now handled with the "B" operand type, and doing things this way was breaking some instructions, notably a shift.
Gabe Black
2007-08-04 20:17:31 -07:00
6f3bb03a3f
X86: Implement the cmpxchg instruction.
Gabe Black
2007-08-04 20:15:27 -07:00
e410a925df
X86: Start implementing segmentation support. Make instructions observe segment prefixes, default segment rules, segment base addresses. Also fix some microcode and add sib and riprel "keywords" to the x86 specialization of the microassembler.
Gabe Black
2007-08-04 20:12:54 -07:00
ced6cbcccf
X86: Create a base enum value for indexing into a region of the miscregs. This lets you index into a group of registers without having to know explicitly which one is the lowest in that group.
Gabe Black
2007-08-04 20:07:42 -07:00
0e6be2a9b1
X86: Add the arch_prctl system call and fix up some microcoding. The arch_prctl system call is used to set and get the FS and GS segment bases. The FS segment is use for TLS, so glibc needs to be able to set it up.
Gabe Black
2007-08-04 20:02:41 -07:00
df015f17a4
switching: turn on profiling after a switch if there's an event
Nathan Binkert
2007-08-04 16:11:11 -07:00
7a996ccc98
switching: Remove the drain and resume code from the switching code. This allows us to change memory modes as well. Clean up the code while we're at it.
Nathan Binkert
2007-08-04 16:09:24 -07:00
5a27431b96
python: use the enum values in the memory mode changing code
Nathan Binkert
2007-08-04 16:06:19 -07:00
300712c0d1
swig: %include all of the enums to get all of the definitions. (instead of %import)
Nathan Binkert
2007-08-04 16:05:18 -07:00
157bd25802
python: provide access to stats
Nathan Binkert
2007-08-04 16:02:04 -07:00
d8900d8478
main: return an an exit code of 1 when we exit due to a python exception. This requires us to not use PyRun_SimpleString, but PyRun_String since the latter actually returns a result
Nathan Binkert
2007-08-04 16:00:36 -07:00
e8e1ddd530
SimpleCPU: Add some DPRINTFs
Nathan Binkert
2007-08-04 15:56:48 -07:00
c2b533cc3b
Add cscope files to .hgignore.
Steve Reinhardt
2007-08-03 16:27:51 -07:00
bb3f7dc83b
tests: new ref outputs for new cache model
Steve Reinhardt
2007-08-03 18:04:30 -04:00
851e3c852b
tests: replace all dest ref files on upgrade (if possible). Originally we were copying all source files in, but this caused problems when (large) inputs were copied along with outputs. Then we switched to just copying the standard files (m5stats.txt, etc.) but that was missing things like the *.console files. This fix should catch all the non-standard files too as long as they are copied in manually once when the test is set up. Also get a lot nicer about warning when files are ignored, and warn when expected files are missing. Those new Python sets sure are handy.
Steve Reinhardt
2007-08-03 18:04:26 -04:00
a0bf2535a8
tests: config.out no longer exists, eliminate ref copy.
Steve Reinhardt
2007-08-03 18:03:59 -04:00
3afc625975
merge from head
Steve Reinhardt
2007-08-03 03:51:30 -04:00
62aa1d7f55
cache: get rid of obsolete params from python.
Steve Reinhardt
2007-08-03 03:51:13 -04:00
121a894ce0
Merge with head.
Gabe Black
2007-08-02 23:30:25 -07:00
0536d0cde9
python: Improve support for python calling back to C++ member functions. Add support for declaring SimObjects to swig so their members can be wrapped. Make sim_object.i only contain declarations for SimObject. Create system.i to contain declarations for System. Update python code to properly call the C++ given the new changes.
Nathan Binkert
2007-08-02 22:50:02 -07:00
dc7a38dce7
Merge: No changes
Ali Saidi
2007-08-02 22:09:54 -04:00
50bceeae14
Serialize: This shouldn't have been commited, I got a little bit carried away it seems.
Ali Saidi
2007-08-02 22:08:33 -04:00
f4b89cd897
X86: Get rid of some debug warnings. Get rid of some warnings that were accidentally committed.
Gabe Black
2007-08-02 16:28:01 -07:00
fa9e4d110a
Merge with head.
Gabe Black
2007-08-02 15:14:36 -07:00
4af5740afd
X86: Finally get the x86 initial stack frame right. After very carefully reading through the Linux source, I'm pretty confident I now know -exactly- how the initial stack frame is constructed, filled, and aligned.
Gabe Black
2007-08-02 15:12:18 -07:00
85b661e35d
X86: Fix special case with SIB index register and REX prefix.
Gabe Black
2007-08-02 15:09:12 -07:00
4041e1ddd9
merge: no manual changes
Nathan Binkert
2007-08-02 14:19:40 -07:00
b367474916
python: fix m5.build_env variable. As it is now, some objects will get the incorrect value depending where they were defined.
Nathan Binkert
2007-08-02 14:12:53 -07:00
31a9114a3d
merge, no manual changes
Ali Saidi
2007-08-02 15:38:06 -04:00
dfa147a70a
python: need to import objects to make some calls work
Nathan Binkert
2007-08-02 12:03:35 -07:00
5682f4f7f9
main: expose the build information as a simple command line parameter
Nathan Binkert
2007-08-02 11:59:02 -07:00
da5f62af7b
Serialization: Provide array serialization methods that work on std::vector
Ali Saidi
2007-08-02 14:43:27 -04:00
c4e026daf4
Output: Make OutputDirectory::create() be able to create binary files.
Ali Saidi
2007-08-02 14:40:56 -04:00
acb91c2dfa
Linux Support: make sure that when we get the stack page for thread info we're doing a 64bit not
Ali Saidi
2007-08-02 14:34:58 -04:00
970261f9ce
debugSymbolTable is a global variable and only needs to be created once, not once per system
Ali Saidi
2007-08-02 14:32:20 -04:00
e719a3e4c0
Fix how the "cmd" parameter is set in se.py and remove hack in x86 process initialization code.
Gabe Black
2007-08-01 18:19:23 -07:00
a3e70f4957
mips: make getArgument inline so mips will link properly
Nathan Binkert
2007-08-01 16:57:29 -07:00
baa1182513
Merge with head.
Gabe Black
2007-08-01 16:00:33 -07:00
458dfc8b3e
Merge with head.
Gabe Black
2007-08-01 15:54:25 -07:00
c032a535ab
MIPS: Files which are needed for the MIPS fix.
Gabe Black
2007-08-01 15:53:39 -07:00
a88f01c200
Statetrace: Make sure all the info block strings are printed.
Gabe Black
2007-08-01 15:40:41 -07:00
8da3e0548e
Merge with head.
Gabe Black
2007-08-01 15:12:07 -07:00
456a4570c1
Configuration: Update the drive systems kernel as well as the testsys kernel with cmd line option.
Ali Saidi
2007-08-01 17:39:16 -04:00
5b5e2fd6cd
X86: Hide the irrelevant portions of the address components for load and store microops.
Gabe Black
2007-08-01 14:34:59 -07:00
84cd78e96f
Merge Gabe and my changes to arch/mips/utility.hh
Ali Saidi
2007-08-01 17:05:03 -04:00
fae60c164e
Arguments: Get rid of duplicate code for the Arguments class in each architecture. Move the argument files to src/sim and add a utility.cc file with a function getArguments() that returns the given argument in the architecture specific fashion. getArguments() was getArg() is the architecture specific Argument class and has had all magic numbers replaced with meaningful constants. Also add a function to the Argument class for testing if an argument is NULL.
Ali Saidi
2007-08-01 16:59:14 -04:00
239d124e83
MIPS: Cleaned up includes to break loops, and got rid of isa_traits.cc Loops of header files including each other was causing compilation to fail. To fix it, a bunch of unnecessary includes were removed, and the code in isa_traits.cc which brought a bunch of include chains together was broken up and put in proximity to the header files that delcared it.
Gabe Black
2007-08-01 13:55:47 -07:00
e5e5b0119d
X86: Fix for compilation bug with new cache code.
Gabe Black
2007-08-01 12:49:58 -07:00
7da3a8e65c
Merge with head.
Gabe Black
2007-08-01 12:02:59 -07:00
c1fa2b156b
Fix for new parameter stuff.
Gabe Black
2007-08-01 12:02:08 -07:00
e42524af02
X86: Reorganize the native tracing code. Ignore different values or rcx and r11 after a syscall until either the local or remote value changes. Also change the codes organization somewhat.
Gabe Black
2007-08-01 12:01:51 -07:00
4b29d22386
X86: Get rid of initialization of R11 R11 is just junk after the start of exectuion because we're "returning" from an execve call and linux destroys the contents of rcx and r11 on system calls.
Gabe Black
2007-08-01 12:00:32 -07:00
a4a5e6bc2e
Twin64_t is in base/bigint.hh
Nathan Binkert
2007-08-01 11:48:32 -07:00
4bdabe1254
Add a flag to indicate an instruction triggers a syscall in SE mode.
Gabe Black
2007-07-31 17:34:08 -07:00
55ade789d3
X86: Add operand type information to the fnstcw and fldw instruction placeholders. These are the only floating point instructions that get used in my simple hello world test. These instructions are for setting up the floating point control register. Their not being implemented doesn't affect anything because floating point isn't used.
Gabe Black
2007-07-31 14:55:06 -07:00
c4c8a12186
Merge from head.
Steve Reinhardt
2007-07-31 00:37:07 -04:00
ae3e1d22fc
X86: Add decoding for x87 floating point.
Gabe Black
2007-07-30 17:54:01 -07:00
463e8a7516
X86: Attach the "DIV" instruction implementation to the decoder.
Gabe Black
2007-07-30 15:44:48 -07:00
595ff465e5
X86: Remove a naming conflict between the register index parameters and the "picked" register values.
Gabe Black
2007-07-30 15:44:21 -07:00
77482dc439
X86: __pad0 should be a 4 byte pad, not a 4 long array of 4 byte pads.
Gabe Black
2007-07-30 15:43:20 -07:00
f02bb63894
X86: Turn on the exit_group, exit, munmap, and write syscalls.
Gabe Black
2007-07-30 15:42:42 -07:00
43f0be5253
X86: Use an mmap base address that matches what an actual machine uses.
Gabe Black
2007-07-30 15:42:04 -07:00
890e583163
X86: Set up RIP relative LEA instructions operands correctly.
Gabe Black
2007-07-30 15:41:08 -07:00
44c3419e1a
X86: Implement unsigned divide. The non-byte version ignores rdx which it shouldn't.
Gabe Black
2007-07-30 15:40:39 -07:00
74fcf117dd
X86: Allow RIP relative decode on -all- memory forms of operands.
Gabe Black
2007-07-30 15:39:25 -07:00
65db30992c
X86: Take into account the regular registers and the microcode registers when decided whether or not to fold.
Gabe Black
2007-07-30 15:38:40 -07:00
9536120845
X86: Fix up the stat structure. This probably still isn't right.
Gabe Black
2007-07-30 13:31:59 -07:00
a1b193f026
X86: Hook in the new instructions.
Gabe Black
2007-07-30 13:31:27 -07:00
ab8ba813c9
X86: Turn on some system calls, and make the kernel version match my development machine.
Gabe Black
2007-07-30 13:30:41 -07:00
9e2b1f8630
X86: Make sure FP_Base_DepTag is big enough to avoid trouble.
Gabe Black
2007-07-30 13:29:56 -07:00
18be07289f
X86: Implement a stub CPUID function which is hardcode to return certain values.
Gabe Black
2007-07-30 13:29:33 -07:00
dbc979b9e2
X86: Force jumps to use 64 bit operand size.
Gabe Black
2007-07-30 13:28:31 -07:00
bae96272a1
X86: Make instructions use pick, and implement/adjust some multiplication microops and instructions.
Gabe Black
2007-07-30 13:28:05 -07:00
fad96cd0fc
X86: Make merge and pick work with high bytes. Fix a sizing issue in pick.
Gabe Black
2007-07-30 13:26:48 -07:00
0d31a41304
X86: Make register names in disassembly reflect high bytes.
Gabe Black
2007-07-30 13:26:14 -07:00
31a862b8f1
X86: missed a file which adds a "fold" bit.
Gabe Black
2007-07-30 13:25:38 -07:00
da84aa95a9
Make the register indices use the appropriate "fold" bit.
Gabe Black
2007-07-30 13:25:00 -07:00
d8beeff324
X86: Make disassembly use the final register index. Add bits to indicate whether or not register indexes should be "folded".
Gabe Black
2007-07-30 13:23:33 -07:00
9b5421dcba
X86: Missed a file for adding a bit to indicate that an REX prefix was present.
Gabe Black
2007-07-30 13:20:08 -07:00
4b3a20cdec
X86: Implement LEAVE
Gabe Black
2007-07-30 13:19:11 -07:00
e70ffb0117
X86: Add a bitfield to indicate whether or not an REX prefix was present.
Gabe Black
2007-07-30 13:17:34 -07:00
24ac08daa4
Fix problem with tracer not being initialized.
Gabe Black
2007-07-30 13:13:11 -07:00
2f93db6f95
memory system: fix functional access bug. Make sure not to keep processing functional accesses after they've been responded to. Also use checkFunctional() return value instead of checking packet command field where possible, mostly just for consistency.
Steve Reinhardt
2007-07-29 20:17:03 -07:00
fa86dcd1a6
Merge with head.
Gabe Black
2007-07-29 13:53:39 -07:00
7309d5ee45
X86: Make logic instructions flag setting work. The instructions now ask for the appropriate flags to be set, and the microops do the "right thing" with the CF and OF flags, namely zero them.
Gabe Black
2007-07-29 13:51:40 -07:00
1af50a9e8b
X86: Make arithmetic instructions set the appropriate flags.
Gabe Black
2007-07-29 13:50:10 -07:00
08474ccf68
Merge Gabe's changes from head.
Steve Reinhardt
2007-07-29 13:25:14 -07:00
4a7d0c4b79
bus: take out response prioritization (timing was messed up). Also make express snoops not occupy bus (since they're magic).
Steve Reinhardt
2007-07-29 13:24:48 -07:00
362ff1bceb
BsaeCPU: Get rid of some bad DPRINTFs. People should never put pointers in DPRINTFs; it messes up tracediffs. Plus these used the FullCPU trace flag, which is not right.
Steve Reinhardt
2007-07-29 13:22:44 -07:00
b4087e0e44
Statetrace: Make statetrace patch amd64 executables for true single stepping after system calls. Because of peculiarities in how system calls are returned from, single stepping executes some system calls and the instruction following them in a single step. Statetrace now patches the executable image when it detects a system call to force "correct" behavior, aka the appearance of stepping one instruction every single time.
Gabe Black
2007-07-29 12:37:35 -07:00
c5c64823fc
Merge with head. style.py was also missing an argument in one call to modified_lines.
Gabe Black
2007-07-29 01:38:07 -07:00
5e34c62b3b
X86: Initial stack frame fixes and constant shuffling. The initial stack frame for x86 is now substantially more correct. The fixes made here can be back ported to SPARC and possible the other ISAs as well. The auxiliary vector types were moved to the LiveProcess base class because they are independent of ISA. Some of the types may only apply to Linux, though, so they may have to be moved.
Gabe Black
2007-07-29 01:33:06 -07:00
e5f5890365
X86: Make limm use merge and allow overriding the data size.
Gabe Black
2007-07-29 01:30:28 -07:00
c52e28a4d9
Statetrace: Print the correct address of auxiliary vectors. The address of the stackpointer proceeding the vector minus 8 should be minus 16.
Gabe Black
2007-07-29 01:29:53 -07:00
b6395da4ce
X86: Fix register ordering. The correct order is unintuitively rax, rcx, rdx, rbx, etc, not rax, rbx, rcx, rdx.
Gabe Black
2007-07-29 01:28:36 -07:00
33847f8c83
X86: return -return_value.value() on failure.
Gabe Black
2007-07-29 01:27:34 -07:00
d995575342
X86: Fix popa and push with the stack pointer. POPA used st instead of ld, and it didn't skip rsp. push rsp needs to store the -original- value of the stack pointer.
Gabe Black
2007-07-29 01:26:47 -07:00
3dcd848ec3
X86: Fix a bug with merge Merge was returning the value to merge in, not the actual result of the merge.
Gabe Black
2007-07-29 01:24:57 -07:00