Thanks for the more specific explanation... that helped a lot. The decision about whether to update the link register or not is on line 213 of src/arch/alpha/isa/branch.isa, and is indeed hard-coded to check for RA equal to 31. It looks like the ISA decoder as a whole only uses "31" and not a predefined constant for the zero register. Note that this is outside of C++, so the ZeroReg constant doesn't mean anything here.
Steve On 8/16/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > > > >"Steve Reinhardt" wrote > > > > I'm a little confused... shouldn't it behave differently when you change > > the value of an important constant? :-) > > Sure I agree that it should behave differently, but shouldn't it carry out > the same operations just on different registers as defined by the > constants? > > The key difference in the two traces is at global time 3000: > > When ZeroReg is 31, and ReturnAddressReg is 0 we see: > > 3000: system.cpu0: Fetch: PC:0x101b74 NPC:0x101b78 > 3000: global: Set register 31 = 0x0 > 3000: system.cpu0: Decode: Decoded jsr instruction: 0x54170000 > 3000: global: Read register 23 = 0x101a50 > 3000: global: Set register 0 = 0x101b78 > > Whereas when ZeroReg is 0, and ReturnAddressReg is 31 we see: > > 3000: system.cpu0: Fetch: PC:0x101b74 NPC:0x101b78 > 3000: global: Set register 0 = 0x0 > 3000: system.cpu0: Decode: Decoded jsr instruction: 0x54170000 > 3000: global: Read register 23 = 0x101a50 > > The final set register call is missing, and this is my confusion. As far > as I can tell I've tracked down the obvious references to ZeroReg which > were coded as 31. For example where the destination is compared to 31 and > the op is replaced with a nop. > > But yet still I see this difference, I was just wondering if you had any > ideas as to where it could occur. The operation occuring is a jsr, which > is of the JUMP format (identical to alpha for now). > > I'll try the trace method you suggest. > > Thanks, > > Matt > > > > > > > > > I'm not too surprised that there are some hard-coded 31s in the Alpha > ISA > > definition; those should be converted to say ZeroReg if that's what they > > are > > representing. > > > > I guess it's just not clear to me what "correct" behavior you're > expecting > > here. > > > > FYI, check out the "tracediff" tool in utils... it's invaluable for > seeing > > where two different executions diverge. I use it all the time with > > --trace-flags=3DAll or All,-Event. See the comments in the script > header > > f= > > or > > instructions, and let me know if you have any questions about it. > > > > Steve > > > > On 8/15/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >> > >> I am progressing with my ISA implementation. As mentioned before I am > >> porting the Alpha ISA to use our in house ISA. > >> > >> Interestingly, today when I tried to change the ZeroReg definition (reg > >> 31 > >> in alpha) to reg 0, I get different output from a trace run of the > first > >> few instructions of my program (a binary compiled to our ISA, have > >> manipulated the elf libraries to accept it in m5). > >> > >> Can anyone tell me why there is a reliance on ZeroReg (and > >> ReturnAddressReg) being redefined? A quick search of the alpha code > >> (which > >> my port is based on) reveals that a lot of hard-coded constants are > >> still > >> left in the code (=3D=3D 31, !=3D 31 etc), I have tried changing these > >> to= > > (=3D=3D > >> ZeroReg, !=3D ZeroReg) in my port, but I still get incorrect output > when > >> defining ZeroReg as 0. > >> > >> I've not yet had a good luck inside the ISA specific parts of the CPU > >> code, are there any hard-coded constants there? > >> > > -------------- next part -------------- > > An HTML attachment was scrubbed... > > URL: > > http://m5sim.org/pipermail/m5-users/attachments/20070815/71272d50/atta= > > chment.html > > > > ------------------------------ > > > > _______________________________________________ > > m5-users mailing list > > m5-users@m5sim.org > > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users > > > > End of m5-users Digest, Vol 13, Issue 14 > > **************************************** > > > > _______________________________________________ > m5-users mailing list > m5-users@m5sim.org > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >
_______________________________________________ m5-users mailing list m5-users@m5sim.org http://m5sim.org/cgi-bin/mailman/listinfo/m5-users