Mailinglist Archive: radeonhd (408 mails)

< Previous Next >
Re: [radeonhd] Re: Understanding ATI assembler and AtomDis
  • From: Alex Deucher <alexdeucher@xxxxxxxxx>
  • Date: Fri, 5 Jun 2009 18:40:34 -0400
  • Message-id: <a728f9f90906051540h4a72e8b9xb676ecd9b742730e@xxxxxxxxxxxxxx>
2009/6/5 Rafał Miłecki <zajec5@xxxxxxxxx>:
W dniu 5 czerwca 2009 20:11 użytkownik Alex Deucher
<alexdeucher@xxxxxxxxx> napisał:
2009/6/5 Rafał Miłecki <zajec5@xxxxxxxxx>:
There is one more command I don't understand:

SET_REG_BLOCK  0000
SET_REG_BLOCK  0001

what does it do?

There are lots of sets of registers that have multiple instances in
register space (e.g., there are two identical sets of CRTC registers,
one for each CRTC, DACs and DIG PHYs on newer chips, etc.).  That
command is used to select the offset added to the registers in order
to access different register blocks.  Take a look at SetCRTC_Timing:

 0009: 3da50400          COMP   param[04]  [.X..]  <-  00
 000d: 441300            JUMP_Equal  0013
 0010: 3a0002            SET_REG_BLOCK  0200

if you've selected crtc 1, add an offset of 0x200 dwords (0x800 bytes)
to the registers, if it's crtc 0, do not.

Alex

Thanks for explaination with nice example. Nice way to handle 2
pll/crtc/... in one code :)

Still one more (hopefully last?) question. How do work (and what is
difference) TEST and COMP?


COMP looks to see if src and dst are equal, TEST tests using logical
AND. You can follow the logic of any of these commands by looking at
AtomBios/CD_Operations.c. See ProcessCompare() and ProcessTest().

param[00] == 0x12345678
X: 4be50004          TEST   param[00]  [X...]  <-  04
Y: 441700            JUMP_Equal  0017
12 != 04, so jump won't happen, right?


This would be equate to:
(0x12 & 0x4) ? NotEqual : Equal
So the jump would happen.

param[00] == 0x12345678
0017: 3d0d000000        COMP   param[00]  [..XX]  <-  0000
001c: 448c00            JUMP_Equal  008c
5678 != 0000, so jump won't happen, right?

correct.

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

< Previous Next >