OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [aeMB/] [sw/] [aemb/] [thread.hh] - Diff between revs 17 and 48

Show entire file | Details | Blame | View Log

Rev 17 Rev 48
Line 39... Line 39...
  /**
  /**
     Checks to see if currently executing Thread 1
     Checks to see if currently executing Thread 1
     @return true if is Thread 1
     @return true if is Thread 1
  */
  */
 
 
  inline int aembIsThread1()
  static inline int aembIsThread1()
  {
  {
    int rmsr = aembGetMSR();
    int rmsr = aembGetMSR();
    return ((rmsr & AEMB_MSR_PHA));
    return ((rmsr & AEMB_MSR_PHA));
  }
  }
 
 
  /**
  /**
     Checks to see if currently executing Thread 0
     Checks to see if currently executing Thread 0
     @return true if is Thread 0
     @return true if is Thread 0
  */
  */
 
 
  inline int aembIsThread0()
  static inline int aembIsThread0()
  {
  {
    int rmsr = aembGetMSR();
    int rmsr = aembGetMSR();
    return (!(rmsr & AEMB_MSR_PHA));
    return (!(rmsr & AEMB_MSR_PHA));
  }
  }
 
 
  /**
  /**
     Checks to see if it is multi-threaded or not.
     Checks to see if it is multi-threaded or not.
     @return true if thread capable
     @return true if thread capable
  */
  */
  inline int aembIsThreaded()
  static inline int aembIsThreaded()
  {
  {
    int rmsr = aembGetMSR();
    int rmsr = aembGetMSR();
    return (rmsr & AEMB_MSR_HTX);
    return (rmsr & AEMB_MSR_HTX);
  }
  }
 
 
  /**
  /**
     Hardware Mutex Signal.
     Hardware Mutex Signal.
     Unlock the hardware mutex, which is unlocked on reset.
     Unlock the hardware mutex, which is unlocked on reset.
   */
   */
  inline void _aembFreeMTX()
  static inline void _aembFreeMTX()
  {
  {
    int tmp;
    int tmp;
    asm volatile ("msrclr %0, %1":"=r"(tmp):"K"(AEMB_MSR_MTX));
    asm volatile ("msrclr %0, %1":"=r"(tmp):"K"(AEMB_MSR_MTX));
  }
  }
 
 
Line 82... Line 82...
     Hardware Mutex Wait.
     Hardware Mutex Wait.
 
 
     Waits until the hardware mutex is unlocked. This should be used
     Waits until the hardware mutex is unlocked. This should be used
     as part of a larger software mutex mechanism.
     as part of a larger software mutex mechanism.
   */
   */
  inline void _aembLockMTX()
  static inline void _aembLockMTX()
  {
  {
    int rmsr;
    int rmsr;
    do
    do
      {
      {
        asm volatile ("msrset %0, %1":"=r"(rmsr):"K"(AEMB_MSR_MTX));
        asm volatile ("msrset %0, %1":"=r"(rmsr):"K"(AEMB_MSR_MTX));

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.