[parisc-linux] 720 - some progress

MichaelS.Zick MichaelS.Zick
Sat, 29 Sep 2001 13:36:16 -0500


On Saturday 29 September 2001 01:00 am, Albert Strasheim wrote:
> regs->iaoq[0] = regs->iaoq[1];
> regs->iaoq[1] = regs->iaoq[0] + 4;
>
> Is this right, or should I leave Jurij's code?
>
Hello Albert,

An observation:
regs->iaoq[1] is the "following instruction" - where "following" means "in 
execution order".  So replacing the emulated instruction with this seems the 
obvious thing to do.

BUT...
Without examining the instruction (which was at iaoq[1] and is now at 
iaog[0]) I don't think it is safe to assume that the instruction following 
that one in execution order is at iaoq[1]+4 !!  (Branches, nullified 
instructions, conditional instructions, etc).

Perhaps...
Instead of trying to compute (determine) what is the next instruction in 
execution order following iaoq[1] ; iaoq[1] could be set to a value that 
would cause the hardware pipeline to fetch the correct following instruction.

Or perhaps...
A way could be found to use whatever "single step" controls are available to 
get the return made to iaoq[1] instead of iaoq[0] and leave the queues along.

Also...
What about the space register queue?  Might these instructions be in a 
different address space?

Mike