Thread (14 messages) 14 messages, 5 authors, 2021-03-05

Re: [PATCH v2 1/3] powerpc: sstep: Fix load and update emulation

flat view

From: Naveen N. Rao <hidden>
Date: 2021-03-04 13:46:13

On 2021/03/01 08:37PM, Segher Boessenkool wrote:
Hi!

I didn't see this until now, almost a month later, sorry about that :-)
No problem.
On Thu, Feb 04, 2021 at 01:57:53PM +0530, Naveen N. Rao wrote:
quoted
On 2021/02/03 03:17PM, Segher Boessenkool wrote:
quoted
Power8 does:

  Load with Update Instructions (RA = 0)
    EA is placed into R0.
  Load with Update Instructions (RA = RT)
    EA is placed into RT. The storage operand addressed by EA is
    accessed, but the data returned by the load is discarded.
I'm actually not seeing that. This is what I am testing with:
	li      8,0xaaa
	mr      6,1
	std     8,64(6)
	#ldu    6,64(6)
	.long	0xe8c60041

And, r6 always ends up with 0xaea. It changes with the value I put into 
r6 though.
That is exactly the behaviour specified for p8.  0aaa+0040=0aea.
quoted
Granted, this is all up in the air, but it does look like there is more 
going on and the value isn't the EA or the value at the address.
That *is* the EA.  The EA is the address the insn does the access at.
I'm probably missing something here. 0xaaa is the value I stored at an 
offset of 64 bytes from the stack pointer (r1 is copied into r6). In the 
ldu instruction above, the EA is 64(r6), which should translate to 
r1+64.  The data returned by the load would be 0xaaa, which should be 
discarded per the description you provided above. So, I would expect to 
see a 0xc0.. address in r6.

In fact, this looks to be the behavior documented for P9:
quoted
Power9 does:

  Load with Update Instructions (RA = 0)
    EA is placed into R0.
  Load with Update Instructions (RA = RT)
    The storage operand addressed by EA is accessed. The 
    displacement
    field is added to the data returned by the load and placed into 
    RT.
- Naveen
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help