Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Scoreboard function for starting intra prediction kernels
  3.  * Copyright © <2010>, Intel Corporation.
  4.  *
  5.  * This program is licensed under the terms and conditions of the
  6.  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at
  7.  * http://www.opensource.org/licenses/eclipse-1.0.php.
  8.  *
  9.  */
  10. #if !defined(__SCOREBOARD_START_INTRA__)
  11. #define __SCOREBOARD_START_INTRA__
  12. //
  13. // Module name: scoreboard_start_intra.asm
  14. //
  15. //      Scoreboard function for starting intra prediction kernels
  16. //      This function is only used by intra prediction kernels to send message to
  17. //      scoreboard in order to check dependency clearance
  18. //
  19. //  $Revision: 5 $
  20. //  $Date: 10/18/06 4:11p $
  21. //
  22. scoreboard_start_intra:
  23.  
  24. // First open message gateway since intra kernels need wake-up message to resume
  25. //
  26.     mov (8)     MSGHDRY0<1>:ud  0x00000000:ud                   // Initialize message header payload with 0
  27.  
  28.     // Send a message with register base RegBase = r0 (0x0) and Size = 0x0
  29.     // 000 00000000 00000 00000 000 00000000 ==> 0000 0000 0000 0000 0000 0000 0000 0000
  30.     // ---------------------------------------------------------------------------------
  31.         and (1)         MSGHDRY0.8<1>:uw        REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub        0x1f:uw         // Set lower word of key
  32.         send (8)        NULLREG  MSGHDRY0       null:ud    MSG_GW       OGWMSGDSC
  33.  
  34. // Send "check dependency" message to scoreboard thread
  35. // --------------------------
  36.  
  37. //      Derive the scoreboard location where the intra thread writes to
  38. //
  39.     mov (8)             MSGHDRY1<1>:ud  0x00000000:ud                   // Initialize message header payload with 0
  40.  
  41.         // Compose M0.5:ud
  42.         #include "set_SB_offset.asm"
  43.  
  44.         // Compose M0.0:ud, i.e. message payload
  45.         and (1)         MSGHDRY1.0<1>:uw        REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub        0x1f:uw         // Set lower word of message
  46.         or      (1)             MSGHDRY1.1<1>:uw        sr0.0<0;1,0>:uw         0x8000:uw       // Set EUID/TID bits + intra start bit
  47.  
  48.         send (8)        NULLREG  MSGHDRY1       null:ud    MSG_GW       FWDMSGDSC+NOTIFYMSG     // Send "Intra start" message to scoreboard kernel
  49.  
  50.     RETURN
  51.  
  52. #endif  // !defined(__SCOREBOARD_START_INTRA__)
  53.