Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Scoreboard function for starting inter 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_INTER__)
  11. #define __SCOREBOARD_START_INTER__
  12. //
  13. // Module name: scoreboard_start_inter.asm
  14. //
  15. //      Scoreboard function for starting inter prediction kernels
  16. //      This function is only used by inter prediction kernels to send message to
  17. //      scoreboard in order to announce the inter kernel has started
  18. //
  19. //  $Revision: 5 $
  20. //  $Date: 10/18/06 4:11p $
  21. //
  22. scoreboard_start_inter:
  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.         send (8)        NULLREG  MSGHDRY0       null:ud    MSG_GW       OGWMSGDSC
  32.  
  33. //      Derive the scoreboard location where the inter thread writes to
  34. //
  35.     mov (8)             MSGHDRY1<1>:ud  0x00000000:ud                   // Initialize message header payload with 0
  36.  
  37.         // Compose M0.5:ud
  38.         #include "set_SB_offset.asm"
  39.  
  40.         // Compose M0.0:ud, i.e. message payload
  41.         or      (1)             MSGHDRY1.1<1>:uw        sr0.0<0;1,0>:uw         0x0000:uw       // Set EUID/TID bits + inter start bit
  42.  
  43.         send (8)        NULLREG  MSGHDRY1       null:ud    MSG_GW       FWDMSGDSC+NOTIFYMSG     // Send "Inter start" message to scoreboard kernel
  44.  
  45.     RETURN
  46.  
  47. #endif  // !defined(__SCOREBOARD_START_INTER__)
  48.