Mailinglist Archive: radeonhd (427 mails)

< Previous Next >
Re: [radeonhd] Understanding ATI assembler and AtomDis
  • From: Alex Deucher <alexdeucher@xxxxxxxxx>
  • Date: Wed, 20 May 2009 13:34:08 -0400
  • Message-id: <a728f9f90905201034sfc5f1e6gbe1e8cc78b7b141f@xxxxxxxxxxxxxx>
2009/5/20 Rafał Miłecki <zajec5@xxxxxxxxx>:
W dniu 20 maja 2009 15:45 użytkownik Alex Deucher
<alexdeucher@xxxxxxxxx> napisał:
2009/5/20 Rafał Miłecki <zajec5@xxxxxxxxx>:
Then how does MOVE work?
MOVE   work[00]   [..XX]  <-  reg[0180]  [..XX]
Let's say I get following output:
# rhd_dump -r 0180,0184 01:00.0
0x0180: 0x01234567
0x0184: 0x89ABCDE
does it mean sth following:
0x0180: 0x01
0x0181: 0x23
0x0182: 0x45
0x0183: 0x67
?
If so, what is [..XX] part of 0x0180? Shuld I treat 0x0180 as 0x0001
and [..XX] means 0x01 then?

Registers are 32 bits, and the atom ops
can operate on individual bytes or groups of bytes.  In this case the
op is operating on the lower two bytes (hence the ..XX).  In your
example the lower two bytes are 0x4567.

You say registers are 32bits... that's fine, for example my 0x0185 is
0xAB, so 2*16bits = 32bits. Alright.

But next you say two lower bytes (2B == 16b) of my example 0x0180
(0x01234567) are 0x4567. Here I'm lost. 4*16bits = 64bits. That means
8B, not 2B :|

Could you explain that one more please, so I could try to understand that?

0x180 is the offset of the regsiter in dwords. 0x180 * 4 = 0x600 =
offset in bytes since 1 dword = 4 bytes. The register offset defines
the register's location relative to the start of register aperture. so
the register in question is 0x180 dwords from the start of the
aperture or 0x600 bytes. Each register is 32 bits, so the lower two
bytes are 0x4567.

Alex
--
To unsubscribe, e-mail: radeonhd+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: radeonhd+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups