41a1acd1e9
Work around a mercurial bug in bdiff.blocks
Nathan Binkert
2007-07-28 21:56:43 -07:00
dc86f3229c
X86: Fix a comment and adjust the stack base address. The stack base on my development machine starts one page below where it needs to. I don't know why it does, but I've duplicated it in m5.
Gabe Black
2007-07-28 21:18:53 -07:00
fe46e28b14
Merge with head.
Gabe Black
2007-07-28 21:04:45 -07:00
4903b549e7
Statetrace: Implement the AMD64 version of TraceChild.
Gabe Black
2007-07-28 20:36:35 -07:00
fa968da296
Statetrace: Fix indendation. Set the default hostname to "localhost" instead of my machine at UM.
Gabe Black
2007-07-28 20:35:33 -07:00
77f712cdb6
Statetrace: Fix compilation problem.
Gabe Black
2007-07-28 20:34:17 -07:00
e996ff7497
X86: Fix up auxiliary vectors. The type constants should go into an architecture independent spot since they are universal to all Linux elf binaries. The right value for some of the vectors needs to be determined. Also, x86 does not store argc or argv_array_base in registers like some other architectures.
Gabe Black
2007-07-28 20:33:42 -07:00
8dd7700482
Turn the instruction tracing code into pluggable sim objects. These need to be refined a little still and given parameters.
Gabe Black
2007-07-28 20:30:43 -07:00
aaf59949e5
AtomicSimpleCPU: fix inadvertent loss of endian conversion on read.
Steve Reinhardt
2007-07-28 18:00:05 -07:00
8705b0799b
packet: get rid of unused intersect() function.
Steve Reinhardt
2007-07-27 12:46:55 -07:00
0cbcb715e0
cache/memtest: fixes for functional accesses.
Steve Reinhardt
2007-07-27 12:46:45 -07:00
01c9d34a0b
cache: Get rid of unused variable.
Steve Reinhardt
2007-07-27 03:51:15 -04:00
f0fef8f850
Merge python and x86 changes with cache branch
Nathan Binkert
2007-07-26 23:15:49 -07:00
cda354b070
scons: make things work when EXTRAS is not defined.
Nathan Binkert
2007-07-26 22:45:33 -07:00
d4e69c006b
Merge with head.
Gabe Black
2007-07-26 22:13:48 -07:00
d1e533a1e2
X86: Fix argument register indexing. Code was assuming that all argument registers followed in order from ArgumentReg0. There is now an ArgumentReg array which is indexed to find the right index. There is a constant, NumArgumentRegs, which can be used to protect against using an invalid ArgumentReg.
Gabe Black
2007-07-26 22:13:14 -07:00
876849724d
X86: Hook in shift and rotate by one instructions, and NOT.
Gabe Black
2007-07-26 22:10:59 -07:00
edaaf1ebf1
X86: Fix pc relative versions of add and subtract.
Gabe Black
2007-07-26 22:10:21 -07:00
647a3270d1
X86: Implement rotate-by-one instructions, and make register rotates use registers.
Gabe Black
2007-07-26 22:09:41 -07:00
9e975a7e08
X86: Implement shift-by-one instructions, and make register shifts use registers.
Gabe Black
2007-07-26 22:09:24 -07:00
c0670187c5
X86: Add functions to read and write to an exec context. These functions take care of calling the thread contexts read and write functions with the right sized data type, and handle unaligned accesses.
Gabe Black
2007-07-26 22:08:35 -07:00
57428b8b0b
X86: Fix carry calculation for subtraction based microops. The carry flag should be calculated using the -complement- of the second operand, not it's negation. The carry in which is part of computing the 2's complement may induce a carry, but if you've already caused the carry before you get the carry computing logic involved, it will miss it.
Gabe Black
2007-07-26 22:06:30 -07:00
749ed15b60
Add functions for mmap and brk.
Gabe Black
2007-07-26 22:04:33 -07:00
7d826f632c
Implement NOT
Gabe Black
2007-07-26 22:03:19 -07:00
6b73ff43ff
Have owner respond to UpgradeReq to avoid race.
Steve Reinhardt
2007-07-26 17:04:17 -07:00
c3bf59dcb9
Add downward express snoops for invalidations.
Steve Reinhardt
2007-07-26 17:04:17 -07:00
f1b5c8fb57
Continue snooping after a writeback is encountered.
Steve Reinhardt
2007-07-26 17:04:16 -07:00
58250b8e5f
bus: Fix default port handling.
Steve Reinhardt
2007-07-26 17:04:12 -07:00
19c01e82b1
Add a new SCons option called EXTRAS that allows you to include stuff in the build process that is outside of the main M5 tree.
Nathan Binkert
2007-07-25 18:21:11 -07:00
c1097d06f7
Can't block on memInhibit packets (now that bus no longer filters them for us).
Steve Reinhardt
2007-07-25 07:47:37 -07:00
de52eebd3b
Integrate snoop loop functions into their respective call sites. Also some additional cleanup of Bus::recvTiming().
Steve Reinhardt
2007-07-24 22:37:41 -07:00
d094f9cf27
Don't delete request at target... requester still needs it.
Steve Reinhardt
2007-07-24 22:36:10 -07:00
26b1c455e0
Merge with head.
Gabe Black
2007-07-24 15:48:40 -07:00
02c39000bf
Hook in a bunch of new instructions, fix a few minor bugs, and expand out one of the prefix multiplexed opcode groups.
Gabe Black
2007-07-24 15:43:38 -07:00
93365f7d1a
Add a tgt_iovec structure to support writev, change the name of X86Linux to X86Linux64, add some syscalls.
Gabe Black
2007-07-24 15:42:11 -07:00
4bb1c5ba0c
Add a special case for "test" which needs an immediate even though everything else with it's opcode doesn't. Also made some spacing consistent.
Gabe Black
2007-07-24 15:37:16 -07:00
97c4258383
The groups of instructions hanging off opcode 71h, 72h, and 73h all need a byte immediate
Gabe Black
2007-07-24 15:19:02 -07:00
69f4a6dc86
Make the shift and rotate microops mask the shift/rotate amount correctly.
Gabe Black
2007-07-24 15:10:53 -07:00
15f57bd7cb
Fix immediate shifts. Implement register shifts.
Gabe Black
2007-07-24 15:10:20 -07:00
66911a1fab
Fix immediate rotates and add register ones.
Gabe Black
2007-07-24 15:08:56 -07:00
d961846e8c
Clean out part of an old comment.
Gabe Black
2007-07-24 15:08:09 -07:00
340ce8e680
Implement cmov.
Gabe Black
2007-07-24 15:07:35 -07:00
28614addff
Implement cdqe and cqo, which are also called cbw and cwde, and cwd and cdq respectively, depending on the operand size.
Gabe Black
2007-07-24 15:07:03 -07:00
f8f7f994b8
Implement setcc.
Gabe Black
2007-07-24 15:05:17 -07:00
1cec0a3249
Get rid of an old comment.
Gabe Black
2007-07-24 15:04:53 -07:00
7e52393432
Get rid of an old comment
Gabe Black
2007-07-24 15:03:43 -07:00
1f9ea6e122
A couple more minor bug fixes for multilevel coherence.
Steve Reinhardt
2007-07-23 22:28:40 -07:00
abc76f20cb
Major changes to how SimObjects are created and initialized. Almost all creation and initialization now happens in python. Parameter objects are generated and initialized by python. The .ini file is now solely for debugging purposes and is not used in construction of the objects in any way.
Nathan Binkert
2007-07-23 21:51:38 -07:00
552097b92e
Allow the fixwhite stuff to work when committing from a subdir
Nathan Binkert
2007-07-23 20:55:57 -07:00
ecf2621f4f
Implement pusha, popa, three operand imul, hook them into the decoder, and clean up the decoder a little.
Gabe Black
2007-07-23 11:20:57 -07:00
97f7ee2e50
Fix WriteReq/StoreCondReq setting in O3.
Steve Reinhardt
2007-07-23 08:18:51 -07:00
82e2a35576
Replace lowerMSHRPending flag with more robust scheme based on following Packet senderState links.
Steve Reinhardt
2007-07-22 21:43:38 -07:00
85f9415a67
Make the operand size reflect the size specifier on the operand tags, and implement NEG
Gabe Black
2007-07-23 01:07:49 +00:00
fe442f67ad
Merge from head.
Steve Reinhardt
2007-07-22 18:02:40 -04:00
089fce4f59
do proper style checks for merged files
Nathan Binkert
2007-07-22 13:45:12 -07:00
d5c74657c9
Merge more changes in from head.
Steve Reinhardt
2007-07-22 08:10:59 -07:00
1c2d5f5e64
Replace DeferredSnoop flag with LowerMSHRPending flag. Turns out DeferredSnoop isn't quite the right bit of info we needed... see new comment in cache_impl.hh.
Steve Reinhardt
2007-07-22 08:09:24 -07:00
03730edc45
Merge Gabe's changes with mine.
Steve Reinhardt
2007-07-22 10:40:45 -04:00
1edd143b68
A few minor non-debug compilation issues.
Steve Reinhardt
2007-07-22 03:07:26 -04:00
2cd454d102
Add the "open" syscall.
Gabe Black
2007-07-22 02:43:03 +00:00
47b0242618
Fixed immediate byte accounting bug.
Gabe Black
2007-07-22 02:34:52 +00:00
bff4f765f5
Fixed displacement size bug.
Gabe Black
2007-07-22 02:23:03 +00:00
6a0b712a1e
Merge with head.
Gabe Black
2007-07-21 22:49:57 -07:00
4b5ba96d38
Add code to turn the style stuff into a mercurial hook. Nag the user during compile if they have an hg cloned copy of M5, have mercurial installed, but don't have the style hook enabled.
Nathan Binkert
2007-07-21 22:33:08 -07:00
f7ff068b30
Implemented and hooked in xchg, rotate with carry, and ret instructions
Gabe Black
2007-07-21 19:29:39 -07:00
ee6fbdc28b
Implement rotate with carry microops.
Gabe Black
2007-07-21 19:27:38 -07:00
92ce2b5974
Deal with invalidations intersecting outstanding upgrades. If the invalidation beats the upgrade at a lower level then the upgrade must be converted to a read exclusive "in the field". Restructure target list & deferred target list to factor out some common code.
Steve Reinhardt
2007-07-21 18:18:42 -07:00
9117860094
Several more fixes for multi-level timing coherence. - Add "deferred snoop" flag to Packet so upper-level caches can distinguish whether lower-level cache request was in-service or not at the time of the original snoop. - Revamp response handling to properly handle deferred snoops on non-cache-fill requests (i.e. upgrades). - Make sure forwarded writebacks are kept in write buffer at lower-level caches so they get snooped properly.
Steve Reinhardt
2007-07-21 13:45:17 -07:00
fc1b7d62b7
Fixed the distinction between far and near versions of jmp, call and ret. Implemented some shifts, rotates, and pushes.
Gabe Black
2007-07-20 23:16:03 -07:00
009df5ff1e
Fixed line number accounting
Gabe Black
2007-07-20 23:12:26 -07:00
75f6c6a016
Implement UD2 and replace the place holder in the decoder.
Gabe Black
2007-07-20 18:27:02 -07:00
8dd93f32e4
Make the "name" function const.
Gabe Black
2007-07-20 18:24:46 -07:00
9093cb79a1
Implement adc and sbb instructions and microops.
Gabe Black
2007-07-20 17:17:11 -07:00
c3669b8925
Implement the rest of the conditional jump instructions and hook them into the decoder.
Gabe Black
2007-07-20 17:02:39 -07:00
231cc3effb
Make the decoder take advantage of the new "B" operand format which takes a register index from the opcode itself.
Gabe Black
2007-07-20 16:48:59 -07:00
1ed6a8ed79
Define and fill out a lot of different instructions and instruction versions. Added two of the shift microops.
Gabe Black
2007-07-20 16:39:07 -07:00
705a22b999
Hook in newly implemented instructions.
Gabe Black
2007-07-20 15:05:37 -07:00
dfcb2ffa46
Comment, implement, fix, and trim the move microassembly.
Gabe Black
2007-07-20 15:04:41 -07:00
fcc23891bb
Implement jnbe.
Gabe Black
2007-07-20 15:03:36 -07:00
79b3208aa5
Appended _NEAR to the near version of call and return.
Gabe Black
2007-07-20 15:03:03 -07:00
f09847c7a6
Make load and store ops use the appropriate sized data access.
Gabe Black
2007-07-20 15:02:09 -07:00
d926de462a
Implement the increment and decrement instructions, and the two operand form of signed multiplication.
Gabe Black
2007-07-20 14:59:14 -07:00
ec5f66190e
Fix code that computes displacement size.
Gabe Black
2007-07-20 14:57:34 -07:00
5d882984d1
Add a bitfield to decode based on what prefixes are used.
Gabe Black
2007-07-20 14:57:04 -07:00
dcfaa348b1
Add a parameter type to read a register index from the opcode itself.
Gabe Black
2007-07-20 14:55:16 -07:00
ee22bcd609
Fix function which calculates the carry flag.
Gabe Black
2007-07-20 14:54:17 -07:00
0baae59c09
Fix carry flag for subtracts, and clean up code slightly.
Gabe Black
2007-07-20 14:53:38 -07:00
0781609693
Fixed width parameter and provided a parameter to flip the carry bit on subtract.
Gabe Black
2007-07-20 14:52:44 -07:00
cfadef74d1
x86 fixes Make the emulation environment consider the rex prefix. Implement and hook in forms of j, jmp, cmp, syscall, movzx Added a format for an instruction to carry a call to the SE mode syscalls system Made memory instructions which refer to the rip do so directly Made the operand size overridable in the microassembly Made the "ext" field of register operations 16 bits to hold a sparse encoding of flags to set or conditions to predicate on Added an explicit "rax" operand for the syscall format Implemented syscall returns.
Gabe Black
2007-07-19 15:15:47 -07:00
09f056a1ef
Check for the two opcode prefix correctly and add in some instructions.
Gabe Black
2007-07-18 17:51:05 -07:00
f6d326d6fc
Hook near returns into the decoder.
Gabe Black
2007-07-18 17:48:16 -07:00
dbf361128a
Implement near returns.
Gabe Black
2007-07-18 17:47:40 -07:00