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>:
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().
This would be equate to:
(0x12 & 0x4) ? NotEqual : Equal
So the jump would happen.
correct.
Alex
--
To unsubscribe, e-mail: radeonhd+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: radeonhd+help@xxxxxxxxxxxx
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 > |