Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright © <2010>, Intel Corporation.
  3.  *
  4.  * This program is licensed under the terms and conditions of the
  5.  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at
  6.  * http://www.opensource.org/licenses/eclipse-1.0.php.
  7.  *
  8.  */
  9. // Module name: WriteURB_Child.asm
  10. //
  11. // General purpose module to write data to URB using the URB handle/offset in r0
  12. //
  13. //----------------------------------------------------------------
  14. //      Assume:
  15. //      - a0.0 and a0.1 is meg desc, has been assign with URB offset and msg size
  16. //      - MRFs are alrady assigned with data.
  17. //----------------------------------------------------------------
  18. //
  19. //  16x16 byte pixel block can be saved using just 1 "send" instruction.
  20.  
  21. #if defined(_DEBUG)
  22.         mov             (1)             EntrySignatureC:w                       0x3535:w
  23. #endif
  24.  
  25. // URB write header:
  26. //mov (8) MSGSRC.0:ud   r0.0<8;8,1>:ud                  // Copy parent R0 header
  27.  
  28. //shr (1)       Temp2_W:uw      URBOffsetC:uw   1:w     // divide by 2, because URB entry is counted by 512bits.  Offset is counted by 256bits.
  29. //add (1) MSGSRC.0:uw           r0.0:uw         Temp2_W:uw     
  30.  
  31. shr (1) MSGSRC.0:uw             URBOffsetC:uw   1:w     // divide by 2, because URB entry is counted by 512bits.  Offset is counted by 256bits.
  32.  
  33. //mov (1) MSGSRC.1:ud   0:ud                                    // Reset Handle 1
  34.  
  35.         // URB write 2 MRFs,
  36.         // Current MB offset is in URBOffset, use it as write origin
  37.         // Add 2 to offset to store data be be passed to the right MB
  38.         //mov (1) URBWriteMsgDesc:ud            0x06300020:ud
  39.  
  40. send  null:uw   m0        MSGSRC<8;8,1>:uw              URBWRITE        MSG_LEN(2)+URBWMSGDSC+0x20 // URB write
  41.