Steve Reinhardt wrote: > On Sun, Oct 24, 2010 at 11:21 PM, Gabriel Michael Black > <[email protected]> wrote: > >> If you have ISA X and it needs to set the PC in some weird way y, then you >> need an method for Y on the PC object. You also need an operand Y that knows >> how to use y to manage the PC. The ISA needs to be able to define that >> operand type, or the parser needs to have it built in. The second is a bad >> idea, I think. The first might work, but it makes the workings of the >> description more elaborately obfuscate the end result. This also assumes >> whatever you're doing can be parameterized one dimensionally. >> >> I think what you're proposing might work, but honestly I'm really tired of >> this change. If we're going to add whole new features to the parser, lets do >> that as a follow up. >> > > I didn't mean to imply that every PC-related update would have to be > done via operands, or that major changes to the parser are justified. > I just think that in the cases where we previously had simple > statements like 'PC = foo' or 'NPC= bar', and we could keep those as > is by redefining those existing operands, it seems to me that it would > be preferable to do that. > > Steve > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev >
Looking through the patch to get an idea of what this might look like, a significant flaw is apparent. Most of the instructions that modify the PC do that relative to the current PC, and that means reading and then writing the PC. writing the PC is a read modify write operation, but we've already read the PC earlier. There was no direct mechanism to describe an offset in the old syntax, so these have to be read in, operated on, and then written out as three different steps. Also some operations aren't just displacements, and with delay slots its not constant which pc should be displaced when you have annulled delay slots. ARM won't cooperate basically at all because you need to read/write the thumb mode bit pretty frequently to see how to update the PC, and the PC behaves differently depending on the circumstances which would need different accessors. I think we could reclaim a lot of these cases by making the parser smarter like I said and making it keep track of whether or not it's read in the PCState structure already. Not being able to put a "." after the PCS operand is another major inconvenience, but maybe we can work around that too because the actual type is fixed and overrides don't make sense. These are both doable modifications, but they're both non-trivial and I'd rather not hold up this change any longer or complicate it any more by implementing them now. Gabe _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
