2011-02-28 10:06:03     Scheduling issue

Document created by Aaronwu Employee on Aug 26, 2013
Version 1Show Document
  • View in full screen mode

2011-02-28 10:06:03     Scheduling issue

isabelle leonardi (FRANCE)

Message: 98468   

 

Hi,

 

I'm currently running linux 2.6.34 (uclinux distribution 2010RC2) on a BF548. I'm experiencing scheduling issues as shown in the following traces:

 

          <idle>-0     [000] 15224.424746:      0:120:R   + [000]   495: 59:S BSC

          <idle>-0     [000] 15224.424775:      0:120:R   + [000]     4:120:S events/0

          <idle>-0     [000] 15224.446213:      0:120:R ==> [000]   495: 59:R BSC

             BSC-495   [000] 15224.446623:    495: 59:R   + [000]   754: 59:S K/dev/BSC

 

The BSC task is woken up at 15224.424746 but switch occurs only at 15224.446623

 

Is the behaviour known? Is there a fix?

 

I would appreciate any help,

 

Isabelle

QuoteReplyEditDelete

 

 

2011-02-28 11:21:37     Re: Scheduling issue

Mike Frysinger (UNITED STATES)

Message: 98473   

 

there is no known issue like you describe in common code

 

presumably "BSC" is your custom kernel driver, so perhaps you should review any delays/sleeping it does

QuoteReplyEditDelete

 

 

2011-02-28 11:44:08     Re: Scheduling issue

isabelle leonardi (FRANCE)

Message: 98477   

 

Thanks for your quick reply!

 

Yes you presume right.

 

But as you can see, the BSC is not the faulty guy: it becomes "runable" at 15224.424746 (likely because of an IT during processing of <idle>, as we have an IT awaking BSC every 20ms) but the scheduler switches to it at 15224.446213 only, so about 20ms afterwards.

 

A processing of 20ms in <idle> with a higher priority active task (BSC=59 vs. <idle>=120), is it really expected?

 

For your information, the BSC (is a kernel thread and) is sleeping on a wait queue when the IT wakes it up.

QuoteReplyEditDelete

 

 

2011-03-04 05:18:28     Re: Scheduling issue

isabelle leonardi (FRANCE)

Message: 98649   

 

We have found a way to reproduce the issue.

Below is a kernel object code to generate the bug, in a couple of seconds (about 20).

 

It is important to note that we have built a PREEMPT kernel (not the preempt rt patch, but the highest possible RT level in standard distribution).

 

This kernel object, when insmod'd, creates:

-a master (kernel) thread, which is responsible to start the scenario and report the bug, when awaken;

-a (kernel) thread A, responsible to reset a flag (being set by an interrupt);

-a (kernel) thread B, doing nothing: we just need to have two living threads

 

The scenario needs two interrupts, from GP timers:

-IT A; associated to a continuous running timer (period is 400us; our SCLK is 130MHz); when the IT hits, there are two stages (repeated until the bug is detected): the first one is for setting the flag and for waking up the thread A (that is expected to reset the flag); the second stage is for checking if the flag is correctly reset; if not, the two timers are stopped and the master thread is awaken;

-IT B: just to wake up the thread B (and to generate scheduler activity).

 

The magical aspect of the scenario is during the second stage of IT A: the second timer (IT B) is started (in one shoot mode) with a period that is chosen so that the two ITs (following first stage of A and B) are collisionning with oneanother. To be sure that we can find the "good" period, we try all possible values (here from about 100us to 600us)... In other words, we get IT B be slidding around A...

 

When the master thread is awaken, this means that the thread A has probably not been correctly scheduled since the flag is not reset (a kernel trace is then needed to manually double check that the thread is awaken from <idle> but not scheduled during a long time). Moreover, the master thread reports the periods of the timer B.

 

NOTE: to reproduce the bug even faster, once we know the critical values for the period of B, we can tune the scenario parameters to make it turn around these values.

 

To your point of view, how can we continue: do you want us to get some specific trace or information to help in debugging -please tell us? Meanwhile, could you try our example and see how to investigate?

 

Thanks in advance for your help!

 

I.Leonardi

 

__________________________________________________________________

 

/**********************************************************************************************

*                                     # i n c l u d e s                                      *

**********************************************************************************************/

 

#include <linux/init.h>

#include <linux/stddef.h>

#include <linux/types.h>

#include <linux/kthread.h>

#include <linux/debugfs.h>

#include <linux/list.h>

#include <asm/uaccess.h>

#include <linux/hrtimer.h>

#include <asm/io.h>

#include <linux/irq.h>

#include <linux/interrupt.h>

#include <asm/gpio.h>

#include <asm/portmux.h>

#include <asm/gptimers.h>

#include <linux/device.h>

#include <linux/delay.h>

#include <linux/hrtimer.h>

 

 

/**********************************************************************************************

*                             # d e f i n e s   a n d   e n u m                              *

**********************************************************************************************/

#define DETRA_MODULE_NAME "DETRACOM"

 

/* Configuration for first timer */

#define TIMERA_PORTMUX      P_TMR3

#define TIMERA_ID           TIMER3_id

#define TIMERA_BIT          TIMER3bit

#define TIMERA_PERIOD       52000       /* for 0.4ms */

/*#define TIMERA_PERIOD       130000       /* for 1ms */

/*#define TIMERA_PERIOD       260000       /* for 2ms */

#define TIMERA_CONFIG       (IRQ_ENA | PWM_OUT | PERIOD_CNT | EMU_RUN | PULSE_HI)

#define TIMERA_IT           IRQ_TIMER3

#define TIMERA_IT_MASK      0x00000008

 

/* Configuration for second timer */

#define TIMERB_PORTMUX      P_TMR7

#define TIMERB_ID           TIMER7_id

#define TIMERB_BIT          TIMER7bit

#define TIMERB_PERIOD_MIN   10000

#define TIMERB_PERIOD_MAX   80000

/*#define TIMERB_PERIOD_MIN   120000

#define TIMERB_PERIOD_MAX   140000*/

/*#define TIMERB_PERIOD_MIN   240000

#define TIMERB_PERIOD_MAX   300000*/

#define TIMERB_CONFIG       (IRQ_ENA | PWM_OUT | EMU_RUN | PULSE_HI)

#define TIMERB_IT           IRQ_TIMER7

#define TIMERB_IT_MASK      0x00080000

 

/**********************************************************************************************

*                                    D a t a   T y p e s                                     *

**********************************************************************************************/

 

/* Main context structure */

typedef struct

{

  /* Main variable to stop all */

  int NeedToEnd;

 

  /* Current TimerB period */

  uint32_t TimerBPeriod;

 

  /* Main state to trigger timers */

  int MainState;

 

  /* For Main thread */

  /*---------------- */

 

  /* Wait queue */

  wait_queue_head_t QueueSignalMain;

 

  /* Main tread task structure */

  struct task_struct *kThreadMain;

 

  /* Main thread priority */

  int ThreadPriorityMain;

 

  /* Variable used to wakeup main thread */

  int SignalEvent;

 

  /* For IT A thread */

  /* ------------- */

 

  /* Wait queue */

  wait_queue_head_t QueueSignalItA;

 

  /* IT tread task structure */

  struct task_struct * kThreadItA;

 

  /* IT thread priority */

  int ThreadPriorityItA;

 

  /* Variable used to wakeup IT thread */

  int GotItA;

 

  /* Counter of IT */

  int ItCountA;

 

  /* For IT B thread */

  /* ------------- */

 

  /* Wait queue */

  wait_queue_head_t QueueSignalItB;

 

  /* IT tread task structure */

  struct task_struct * kThreadItB;

 

  /* IT thread priority */

  int ThreadPriorityItB;

 

  /* Variable used to wakeup IT thread */

  int GotItB;

 

  /* Counter of ITs */

  int ItACount;

  int ItBCount;

 

} DetracomContext_t;

 

/**********************************************************************************************

*                           F u n c t i o n   P r o t o t y p e s                            *

**********************************************************************************************/

 

/**********************************************************************************************

*                                     C o n s t a n t s                                      *

**********************************************************************************************/

 

/* None */

 

/**********************************************************************************************

*                                    L o c a l   D a t a                                     *

**********************************************************************************************/

 

/* Main context */

DetracomContext_t MainContext;

 

/**********************************************************************************************

*                          F u n c t i o n   D e f i n i t i o n s                           *

**********************************************************************************************/

/* To register a GPTIMER */

static int32_t GpTimerRegister(uint16_t     Portmux,

                               uint16_t     TimerId,

                               uint16_t     TimerBit,

                               uint16_t     TimerConfig,

                               uint32_t     TimerPeriod,

                               uint32_t     TimerWidth)

{

  int32_t  Status;

 

  /* Get the peripheral pins (PMUX) for the timer */

  Status = peripheral_request(/* Peripheral mux */ Portmux,

                              /* Label          */ DETRA_MODULE_NAME);

 

  /* Check request status */

  if (Status != 0)

  {

    /* Already being used! */

    printk(KERN_ERR "GpTimerRegister: PMUX %d already is use (error %d)\n",

           Portmux,

           Status);

    return -EBUSY;

  }

 

  /* Disable the timer, just in case it is currently running */

  disable_gptimers(TimerBit);

 

  /* Enable output according to pin logic */

  set_gptimer_config(/* timer_id */ TimerId,

                     /* config   */ TimerConfig);

 

  /* Setup the timer period duration */

  set_gptimer_period(/* timer_id */ TimerId,

                     /* period   */ TimerPeriod);

 

  /* Setup the timer width duration; by default we assume it is a CLOCK (so a PWM ratio of 50%) */

  set_gptimer_pwidth(/* timer_id */ TimerId,

                     /* width    */ TimerWidth);

 

  /* Return success */

  return 0;

}

 

/* To unregister a GPTIMER */

static void GpTimerUnregister(uint16_t     Portmux,

                              uint16_t     TimerId,

                              uint16_t     TimerBit)

{

  /* Disable the timer */

  disable_gptimers(TimerBit);

 

  /* Free the peripheral pins (PMUX) used for the timer */

  peripheral_free(Portmux);

}

 

/* Interrupt handler for timer A */

static irqreturn_t GpioInterruptHandlerA(int irq, void * dev_id)

{

  DetracomContext_t *pMainContext;

  uint32_t val32;

  unsigned long      Flags;

  int WakeupMain = 0;

  int WakeupIt = 0;

  val32 = get_gptimer_status(0);

  set_gptimer_status(0, val32 & TIMERA_IT_MASK);

 

  /* Get the main context */

  pMainContext = dev_id;

 

  if (pMainContext->MainState == 0)

  {

    pMainContext->GotItA = 1;

    WakeupIt = 1;

    pMainContext->MainState = 1;

  }

  else

  {

    if (pMainContext->GotItA == 1)

    {

      disable_gptimers(TIMERA_BIT);

      disable_gptimers(TIMERB_BIT);

      pMainContext->SignalEvent = 1;

      WakeupMain = 1;

    }

    else

    {

      set_gptimer_pwidth(/* timer_id */ TIMERB_ID,

                         /* width    */ pMainContext->TimerBPeriod);

      /*if (pMainContext->ItCountA > 10)*/

      if (pMainContext->ItCountA > 1)

      {

        pMainContext->TimerBPeriod++;

        if (pMainContext->TimerBPeriod == TIMERB_PERIOD_MAX)

        {

          pMainContext->TimerBPeriod = TIMERB_PERIOD_MIN;

        }

        pMainContext->ItCountA = 0;

      }

      enable_gptimers(TIMERB_BIT);

    }

    pMainContext->MainState = 0;

  }

  pMainContext->ItCountA++;

 

  if (WakeupIt == 1)

  {

    wake_up(&pMainContext->QueueSignalItA);

  }

  if (WakeupMain == 1)

  {

    wake_up(&pMainContext->QueueSignalMain);

  }

  pMainContext->ItACount++;

  /* Exit ISR */

  return IRQ_HANDLED;

}

 

/* Interrupt handler for timer B */

static irqreturn_t GpioInterruptHandlerB(int irq, void * dev_id)

{

  DetracomContext_t *pMainContext;

  uint32_t val32;

 

  val32 = get_gptimer_status(0);

  set_gptimer_status(0, val32 & TIMERB_IT_MASK);

 

  /* Get the main context */

  pMainContext = dev_id;

 

  pMainContext->GotItB = 1;

  wake_up(&pMainContext->QueueSignalItB);

  pMainContext->ItBCount++;

  /* Exit ISR */

  return IRQ_HANDLED;

}

 

/* To register a GPIO with IT */

static int32_t GpioRegister(uint16_t       GpioInterruptId,

                            unsigned long  InterruptMode,

                            irq_handler_t  pIsr,

                            void          *pIsrParameter)

{

  int32_t Status;

 

  /* Request the system for the ISR */

  Status = request_irq(/* @irq: Interrupt line to allocate                      */ GpioInterruptId,

                       /* @handler: Function to be called when the IRQ occurs   */ pIsr,

                       /* @irqflags: Interrupt type flags                       */ InterruptMode,

                       /* @devname: An ascii name for the claiming device       */ DETRA_MODULE_NAME,

                       /* @dev_id: A cookie passed back to the handler function */ pIsrParameter);

 

  /* Check request status */

  if (Status != 0)

  {

    /* Already being used! */

    printk(KERN_ERR "GpioRegister: GPIO IRQ %d already is use (error %d)\n",

           GpioInterruptId,

           Status);

 

    return -EBUSY;

  }

 

  /* Return success */

  return 0;

}

 

/* To unregister a GPIO with IT */

static void GpioUnregister(uint16_t  GpioInterruptId,

                           void     *pIsrParameter)

{

  /* Free the IRQ line */

  free_irq(/* @irq: Interrupt line to free     */ GpioInterruptId,

           /* @dev_id: Device identity to free */ pIsrParameter);

}

 

/* IT thread A */

static int kThreadItA(void * data)

{

  DetracomContext_t *pMainContext = (DetracomContext_t *)data;

  struct sched_param SchedulerParameters;

  int32_t            Status;

  unsigned long      Flags;

 

 

  /* Change priority and scheduler (note: default is MAX (0)/OTHER) */

  SchedulerParameters.sched_priority = pMainContext->ThreadPriorityItA;

  Status = sched_setscheduler(current, SCHED_FIFO, &SchedulerParameters);

 

  /* Warn in case of priority problem */

  if (Status != 0)

  {

    printk(KERN_INFO "kThreadItA: set kthread priority error %d\n",

           Status);

  }

 

  /* Allow to be killed (-9) */

  allow_signal(SIGKILL);

 

  /* Small thread information */

  printk(KERN_INFO "kThreadItA: start...\n");

 

  /* Infinite loop */

  for (;;)

  {

    /* Normal condition: wait for a message, a timeout or any other event */

    /* ------------------------------------------------------------------ */

    Status = wait_event_interruptible(pMainContext->QueueSignalItA,

                                      pMainContext->GotItA != 0);

 

    if (pMainContext->NeedToEnd != 0)

    {

      printk(KERN_INFO "kThreadItA end\n");

      break;

    }

    pMainContext->GotItA = 0;

 

  }

  return(0);

}

 

/* IT thread B */

static int kThreadItB(void * data)

{

  DetracomContext_t *pMainContext = (DetracomContext_t *)data;

  struct sched_param SchedulerParameters;

  int32_t            Status;

 

  /* Change priority and scheduler (note: default is MAX (0)/OTHER) */

  SchedulerParameters.sched_priority = pMainContext->ThreadPriorityItB;

  Status = sched_setscheduler(current, SCHED_FIFO, &SchedulerParameters);

 

  /* Warn in case of priority problem */

  if (Status != 0)

  {

    printk(KERN_INFO "kThreadItB: set kthread priority error %d\n",

           Status);

  }

 

  /* Allow to be killed (-9) */

  allow_signal(SIGKILL);

 

  /* Small thread information */

  printk(KERN_INFO "kThreadItB: start...\n");

 

  /* Infinite loop */

  for (;;)

  {

    /* Normal condition: wait for a message, a timeout or any other event */

    /* ------------------------------------------------------------------ */

    Status = wait_event_interruptible(pMainContext->QueueSignalItB,

                                      pMainContext->GotItB != 0);

 

    if (pMainContext->NeedToEnd != 0)

    {

      printk(KERN_INFO "kThreadItB end\n");

      break;

    }

    /*if (Status > 0)*/

    {

      pMainContext->GotItB = 0;

    }

 

  }

  return(0);

}

 

/* Main thread */

static int kThreadMain(void * data)

{

  DetracomContext_t *pMainContext = (DetracomContext_t *)data;

  struct sched_param SchedulerParameters;

  int32_t            Status;

  unsigned long      Flags;

 

 

  /* Change priority and scheduler (note: default is MAX (0)/OTHER) */

  SchedulerParameters.sched_priority = pMainContext->ThreadPriorityMain;

  Status = sched_setscheduler(current, SCHED_FIFO, &SchedulerParameters);

 

  /* Warn in case of priority problem */

  if (Status != 0)

  {

    printk(KERN_INFO "kThreadMain: set kthread priority error %d\n",

           Status);

  }

 

  /* Allow to be killed (-9) */

  allow_signal(SIGKILL);

 

  /* Small thread information */

  printk(KERN_INFO "kThreadMain: start...\n");

 

  pMainContext->MainState = 0;

 

  /* Infinite loop */

  for (;;)

  {

    enable_gptimers(TIMERA_BIT);

 

    /* Normal condition: wait for a message, a timeout or any other event */

    /* ------------------------------------------------------------------ */

    Status = wait_event_interruptible(pMainContext->QueueSignalMain,

                                      pMainContext->SignalEvent != 0);

 

    if (pMainContext->NeedToEnd != 0)

    {

      printk(KERN_INFO "kThreadMain end\n");

      break;

    }

    if (pMainContext->SignalEvent == 1)

    {

      printk(KERN_INFO "Got issue - Count %d\n", pMainContext->TimerBPeriod);

      pMainContext->SignalEvent = 0;

    }

 

  }

  return(0);

}

 

/* Driver initialisation */

static int __init Detracom_Init(void)

{

  /* Context init */

  MainContext.NeedToEnd = 0;

 

  MainContext.GotItA = 0;

  init_waitqueue_head(&MainContext.QueueSignalItA);

  MainContext.ThreadPriorityItA = 40; // 59 HIGH

 

  init_waitqueue_head(&MainContext.QueueSignalItB);

  MainContext.ThreadPriorityItB = 10; // 99 VERY LOW

 

  MainContext.SignalEvent = 0;

  init_waitqueue_head(&MainContext.QueueSignalMain);

  MainContext.ThreadPriorityMain = 30; // 69 LOW

 

  /* Prepare timers */

  MainContext.TimerBPeriod = TIMERB_PERIOD_MIN;

  GpTimerRegister(TIMERA_PORTMUX, TIMERA_ID, TIMERA_BIT, TIMERA_CONFIG, TIMERA_PERIOD, TIMERA_PERIOD/2);

  GpTimerRegister(TIMERB_PORTMUX, TIMERB_ID, TIMERB_BIT, TIMERB_CONFIG, 0, MainContext.TimerBPeriod);

 

  GpioRegister(TIMERA_IT, IRQF_TRIGGER_FALLING, GpioInterruptHandlerA, &MainContext);

  GpioRegister(TIMERB_IT, IRQF_TRIGGER_FALLING, GpioInterruptHandlerB, &MainContext);

 

  /* Create the threads woken up by interrupts */

  MainContext.kThreadItA = kthread_run(kThreadItA, &MainContext, "%s", "DetraThreadItA");

  MainContext.kThreadItB = kthread_run(kThreadItB, &MainContext, "%s", "DetraThreadItB");

 

  /* Create the main thread */

  MainContext.kThreadMain = kthread_run(kThreadMain, &MainContext, "%s", "DetraThreadMain");

 

  /* Return success */

  return 0;

 

}

 

/* Driver exit */

static void __exit Detracom_Exit(void)

{

  unsigned long      Flags;

 

  printk(KERN_INFO "ItA %d - ItB %d\n", MainContext.ItACount, MainContext.ItBCount);

  MainContext.NeedToEnd = 1;

  MainContext.SignalEvent = 1;

  MainContext.GotItA = 1;

  MainContext.GotItB = 1;

  wake_up(&MainContext.QueueSignalItA);

  wake_up(&MainContext.QueueSignalItB);

  wake_up(&MainContext.QueueSignalMain);

  GpioUnregister(TIMERA_IT, &MainContext);

  GpioUnregister(TIMERB_IT, &MainContext);

  GpTimerUnregister(TIMERA_PORTMUX, TIMERA_ID, TIMERA_BIT);

  GpTimerUnregister(TIMERB_PORTMUX, TIMERB_ID, TIMERB_BIT);

 

  msleep(1000);

}

 

 

/**********************************************************************************************

*                                 K e r n e l   a t t a c h                                  *

**********************************************************************************************/

 

/* Module functions */

module_init(Detracom_Init);

module_exit(Detracom_Exit);

 

MODULE_AUTHOR("DETRACOM");

MODULE_DESCRIPTION("Scheduler test driver");

MODULE_LICENSE("GPL");

 

QuoteReplyEditDelete

 

 

2011-03-04 11:39:28     Re: Scheduling issue

isabelle leonardi (FRANCE)

Message: 98652   

 

Below is a trace when we detect the bug.

 

I have added some comments inside it; of course, read it from bottom to top, for normal time flow.

 

 

 

Please advise!

 

Thanks a lot!

 

 

 

 

 

 

 

 

 

   0 Target : <0x036054b6> { :detradrv:_GpioInterruptHandlerA + 0xaa }

     Source : <0x03605472> { :detradrv:_GpioInterruptHandlerA + 0x66 } IF CC JUMP pcrel

   1 Target : <0x0360546c> { :detradrv:_GpioInterruptHandlerA + 0x60 }

     Source : <0x03605418> { :detradrv:_GpioInterruptHandlerA + 0xc } IF !CC JUMP pcrel (BP)

   2 Target : <0x0360540c> { :detradrv:_GpioInterruptHandlerA + 0x0 }

 

IT A - second stage - is entered here; we detect the bug (above) and print that trace.

 

 

     Source : <0x0003b948> { _handle_IRQ_event + 0x88 } CALL (P2)

   3 Target : <0x0003b942> { _handle_IRQ_event + 0x82 }

     Source : <0x0003b900> { _handle_IRQ_event + 0x40 } IF CC JUMP pcrel (BP)

   4 Target : <0x0003b8c0> { _handle_IRQ_event + 0x0 }

     Source : <0x0003d6a6> { _handle_simple_irq + 0x56 } CALL pcrel

   5 Target : <0x0003d6a2> { _handle_simple_irq + 0x52 }

     Source : <0x0003d702> { _handle_simple_irq + 0xb2 } JUMP.S

   6 Target : <0x0003d702> { _handle_simple_irq + 0xb2 }

     Source : <0x001bc4fc> { _preempt_schedule + 0x1c } RTS

   7 Target : <0x001bc4e0> { _preempt_schedule + 0x0 }

     Source : <0x0003d6fe> { _handle_simple_irq + 0xae } JUMP.L

   8 Target : <0x0003d6fe> { _handle_simple_irq + 0xae }

     Source : <0x0003d6a0> { _handle_simple_irq + 0x50 } IF !CC JUMP pcrel

   9 Target : <0x0003d650> { _handle_simple_irq + 0x0 }

     Source : <0x00004860> { _asm_do_IRQ + 0x70 } CALL (P1)

  10 Target : <0x00004858> { _asm_do_IRQ + 0x68 }

     Source : <0x0003b482> { _irq_to_desc + 0x1a } RTS

  11 Target : <0x0003b468> { _irq_to_desc + 0x0 }

     Source : <0x00004854> { _asm_do_IRQ + 0x64 } JUMP.L

  12 Target : <0x00004852> { _asm_do_IRQ + 0x62 }

     Source : <0x00004812> { _asm_do_IRQ + 0x22 } IF CC JUMP pcrel (BP)

  13 Target : <0x0000480c> { _asm_do_IRQ + 0x1c }

     Source : <0x00034fca> { _tick_check_idle + 0x6e } RTS

  14 Target : <0x00034fbc> { _tick_check_idle + 0x60 }

     Source : <0x00034e12> { _tick_do_update_jiffies64 + 0x96 } RTS

  15 Target : <0x00034e0a> { _tick_do_update_jiffies64 + 0x8e }

     Source : <0x00034eda> { _tick_do_update_jiffies64 + 0x15e } IF !CC JUMP pcrel (BP)

  16 Target : <0x00034ed6> { _tick_do_update_jiffies64 + 0x15a }

     Source : <0x00034db6> { _tick_do_update_jiffies64 + 0x3a } IF CC JUMP pcrel

  17 Target : <0x00034d7c> { _tick_do_update_jiffies64 + 0x0 }

     Source : <0x00034fb8> { _tick_check_idle + 0x5c } JUMP.L

  18 Target : <0x00034f7e> { _tick_check_idle + 0x22 }

     Source : <0x000312d0> { _ktime_get + 0xe4 } RTS

  19 Target : <0x000312c8> { _ktime_get + 0xdc }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

  20 Target : <0x0002c408> { _ktime_add_ns + 0x9c }

     Source : <0x0002c3f6> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

  21 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

  22 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x000312c4> { _ktime_get + 0xd8 } JUMP.L

  23 Target : <0x0003127a> { _ktime_get + 0x8e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

  24 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00031276> { _ktime_get + 0x8a } JUMP.L

  25 Target : <0x0003124c> { _ktime_get + 0x60 }

     Source : <0x00006580> { _bfin_read_cycles + 0x4 } RTS

  26 Target : <0x0000657c> { _bfin_read_cycles + 0x0 }

     Source : <0x0003124a> { _ktime_get + 0x5e } CALL (P2)

  27 Target : <0x00031222> { _ktime_get + 0x36 }

     Source : <0x00031216> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

  28 Target : <0x000311ec> { _ktime_get + 0x0 }

     Source : <0x00034f7a> { _tick_check_idle + 0x1e } CALL pcrel

  29 Target : <0x00034f5c> { _tick_check_idle + 0x0 }

     Source : <0x0001886a> { _irq_enter + 0x52 } CALL pcrel

  30 Target : <0x0001885c> { _irq_enter + 0x44 }

     Source : <0x00018842> { _irq_enter + 0x2a } IF CC JUMP pcrel

  31 Target : <0x00018826> { _irq_enter + 0xe }

     Source : <0x0000c4a4> { _idle_cpu + 0x1c } RTS

  32 Target : <0x0000c488> { _idle_cpu + 0x0 }

     Source : <0x00018822> { _irq_enter + 0xa } JUMP.L

  33 Target : <0x00018820> { _irq_enter + 0x8 }

     Source : <0x0003e350> { _rcu_irq_enter + 0x20 } RTS

  34 Target : <0x0003e346> { _rcu_irq_enter + 0x16 }

     Source : <0x0003e342> { _rcu_irq_enter + 0x12 } IF CC JUMP pcrel

  35 Target : <0x0003e330> { _rcu_irq_enter + 0x0 }

     Source : <0x0001881c> { _irq_enter + 0x4 } CALL pcrel

  36 Target : <0x00018818> { _irq_enter + 0x0 }

     Source : <0x00004808> { _asm_do_IRQ + 0x18 } JUMP.L

  37 Target : <0x000047f0> { _asm_do_IRQ + 0x0 }

     Source : <0x0000b0e8> { _do_irq + 0x88 } CALL pcrel

  38 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  39 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  40 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  41 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  42 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  43 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  44 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  45 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  46 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  47 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  48 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  49 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  50 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  51 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  52 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  53 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  54 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  55 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  56 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  57 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  58 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  59 Target : <0x0000b0c0> { _do_irq + 0x60 }

     Source : <0x0000b0b6> { _do_irq + 0x56 } JUMP.S

  60 Target : <0x0000b060> { _do_irq + 0x0 }

     Source : <0x0000ab3a> { __common_int_entry + 0x72 } JUMP.L

  61 Target : <0x0000aac8> { __common_int_entry + 0x0 }

     Source : <0x0000ad12> { _evt_evt11 + 0xa } JUMP.S

  62 Target : <0x0000ad08> { _evt_evt11 + 0x0 }

 

IT A - second stage - hits here (above), while <idle> is running IDLE instruction during about 400us (below).

 

 

     Source : <0x0000162a> { _default_idle + 0x1e } IDLE

  63 Target : <0x00018a5c> { _irq_exit + 0x38 }

     Source : <0x0003e3c8> { _rcu_irq_exit + 0x60 } RTS

  64 Target : <0x0003e3ba> { _rcu_irq_exit + 0x52 }

     Source : <0x0003e392> { _rcu_irq_exit + 0x2a } IF CC JUMP pcrel

  65 Target : <0x0003e37c> { _rcu_irq_exit + 0x14 }

     Source : <0x0003e378> { _rcu_irq_exit + 0x10 } IF CC JUMP pcrel

  66 Target : <0x0003e368> { _rcu_irq_exit + 0x0 }

     Source : <0x00018a58> { _irq_exit + 0x34 } JUMP.L

  67 Target : <0x00018a24> { _irq_exit + 0x0 }

     Source : <0x00004844> { _asm_do_IRQ + 0x54 } JUMP.L

  68 Target : <0x00004844> { _asm_do_IRQ + 0x54 }

     Source : <0x0000a932> { _evt_evt14 + 0x6 } RTS

  69 Target : <0x0000a92c> { _evt_evt14 + 0x0 }

     Source : <0x0000a92a> { _lower_to_irq14 + 0x12 } RTI

  70 Target : <0x0000a918> { _lower_to_irq14 + 0x0 }

     Source : <0x00004840> { _asm_do_IRQ + 0x50 } JUMP.L

  71 Target : <0x00004822> { _asm_do_IRQ + 0x32 }

     Source : <0x00004862> { _asm_do_IRQ + 0x72 } JUMP.S

  72 Target : <0x00004862> { _asm_do_IRQ + 0x72 }

 

Ooops! Here the scheduler misses the tread! We come back in <idle>.

 

 

     Source : <0x001bc4fc> { _preempt_schedule + 0x1c } RTS

  73 Target : <0x001bc4e0> { _preempt_schedule + 0x0 }

     Source : <0x0003d6fa> { _handle_simple_irq + 0xaa } JUMP.L

  74 Target : <0x0003d6f4> { _handle_simple_irq + 0xa4 }

     Source : <0x0003d6e0> { _handle_simple_irq + 0x90 } IF !CC JUMP pcrel

  75 Target : <0x0003d6ba> { _handle_simple_irq + 0x6a }

     Source : <0x0003d6f2> { _handle_simple_irq + 0xa2 } JUMP.S

  76 Target : <0x0003d6f2> { _handle_simple_irq + 0xa2 }

     Source : <0x0003cc38> { _note_interrupt + 0x84 } RTS

  77 Target : <0x0003cc22> { _note_interrupt + 0x6e }

     Source : <0x0003cbd0> { _note_interrupt + 0x1c } IF CC JUMP pcrel (BP)

  78 Target : <0x0003cbb4> { _note_interrupt + 0x0 }

     Source : <0x0003d6ee> { _handle_simple_irq + 0x9e } JUMP.L

  79 Target : <0x0003d6ea> { _handle_simple_irq + 0x9a }

     Source : <0x0003d6b8> { _handle_simple_irq + 0x68 } IF CC JUMP pcrel

  80 Target : <0x0003d6aa> { _handle_simple_irq + 0x5a }

     Source : <0x0003b9c4> { _handle_IRQ_event + 0x104 } RTS

  81 Target : <0x0003b9b8> { _handle_IRQ_event + 0xf8 }

     Source : <0x0003b9b0> { _handle_IRQ_event + 0xf0 } IF CC JUMP pcrel (BP)

  82 Target : <0x0003b9a6> { _handle_IRQ_event + 0xe6 }

     Source : <0x0003ba08> { _handle_IRQ_event + 0x148 } JUMP.S

  83 Target : <0x0003ba04> { _handle_IRQ_event + 0x144 }

     Source : <0x0003b99c> { _handle_IRQ_event + 0xdc } IF CC JUMP pcrel

  84 Target : <0x0003b99a> { _handle_IRQ_event + 0xda }

     Source : <0x0003b958> { _handle_IRQ_event + 0x98 } IF CC JUMP pcrel (BP)

  85 Target : <0x0003b94a> { _handle_IRQ_event + 0x8a }

 

IT A handler is finished. We expect thread A to be sheduled, now (above).

 

 

     Source : <0x0360546a> { :detradrv:_GpioInterruptHandlerA + 0x5e } RTS

  86 Target : <0x03605462> { :detradrv:_GpioInterruptHandlerA + 0x56 }

     Source : <0x00006dc8> { _set_gptimer_status + 0x24 } RTS

  87 Target : <0x00006da4> { _set_gptimer_status + 0x0 }

     Source : <0x03605460> { :detradrv:_GpioInterruptHandlerA + 0x54 } CALL (P2)

  88 Target : <0x03605452> { :detradrv:_GpioInterruptHandlerA + 0x46 }

     Source : <0x00006e10> { _get_gptimer_status + 0x20 } RTS

  89 Target : <0x00006df0> { _get_gptimer_status + 0x0 }

     Source : <0x03605450> { :detradrv:_GpioInterruptHandlerA + 0x44 } CALL (P2)

  90 Target : <0x0360543c> { :detradrv:_GpioInterruptHandlerA + 0x30 }

     Source : <0x001bc4fc> { _preempt_schedule + 0x1c } RTS

  91 Target : <0x001bc4e0> { _preempt_schedule + 0x0 }

     Source : <0x000101fc> { ___wake_up + 0x5c } CALL pcrel

  92 Target : <0x000101f6> { ___wake_up + 0x56 }

     Source : <0x000101ec> { ___wake_up + 0x4c } IF !CC JUMP pcrel

  93 Target : <0x000101c6> { ___wake_up + 0x26 }

     Source : <0x0000c430> { ___wake_up_common + 0x58 } RTS

  94 Target : <0x0000c420> { ___wake_up_common + 0x48 }

     Source : <0x0000c418> { ___wake_up_common + 0x40 } IF CC JUMP pcrel (BP)

  95 Target : <0x0000c412> { ___wake_up_common + 0x3a }

     Source : <0x00028c02> { _autoremove_wake_function + 0x32 } RTS

  96 Target : <0x00028be2> { _autoremove_wake_function + 0x12 }

     Source : <0x00010ffe> { _try_to_wake_up + 0xee } RTS

  97 Target : <0x00010ff6> { _try_to_wake_up + 0xe6 }

     Source : <0x000110ac> { _try_to_wake_up + 0x19c } JUMP.S

  98 Target : <0x000110ac> { _try_to_wake_up + 0x19c }

     Source : <0x001bc4fc> { _preempt_schedule + 0x1c } RTS

  99 Target : <0x001bc4e0> { _preempt_schedule + 0x0 }

     Source : <0x000110a8> { _try_to_wake_up + 0x198 } JUMP.L

100 Target : <0x000110a8> { _try_to_wake_up + 0x198 }

     Source : <0x00010ff4> { _try_to_wake_up + 0xe4 } IF !CC JUMP pcrel

101 Target : <0x00010fe2> { _try_to_wake_up + 0xd2 }

     Source : <0x00011004> { _try_to_wake_up + 0xf4 } JUMP.S

102 Target : <0x00011004> { _try_to_wake_up + 0xf4 }

     Source : <0x001bc4fc> { _preempt_schedule + 0x1c } RTS

103 Target : <0x001bc4e0> { _preempt_schedule + 0x0 }

     Source : <0x00011000> { _try_to_wake_up + 0xf0 } JUMP.L

104 Target : <0x00011000> { _try_to_wake_up + 0xf0 }

     Source : <0x00010fe0> { _try_to_wake_up + 0xd0 } IF !CC JUMP pcrel

105 Target : <0x00010fce> { _try_to_wake_up + 0xbe }

     Source : <0x00010fc0> { _try_to_wake_up + 0xb0 } IF CC JUMP pcrel (BP)

106 Target : <0x00010fb4> { _try_to_wake_up + 0xa4 }

     Source : <0x0000b7dc> { _resched_task + 0x28 } RTS

107 Target : <0x0000b7d8> { _resched_task + 0x24 }

     Source : <0x0000b7ca> { _resched_task + 0x16 } IF CC JUMP pcrel (BP)

108 Target : <0x0000b7b4> { _resched_task + 0x0 }

     Source : <0x0000ba1e> { _check_preempt_curr_idle + 0xe } JUMP.L

109 Target : <0x0000ba10> { _check_preempt_curr_idle + 0x0 }

     Source : <0x00010fb2> { _try_to_wake_up + 0xa2 } CALL (P2)

110 Target : <0x00010fa4> { _try_to_wake_up + 0x94 }

     Source : <0x00010f64> { _try_to_wake_up + 0x54 } IF CC JUMP pcrel (BP)

111 Target : <0x00010f58> { _try_to_wake_up + 0x48 }

     Source : <0x00011092> { _try_to_wake_up + 0x182 } JUMP.S

112 Target : <0x00011090> { _try_to_wake_up + 0x180 }

     Source : <0x00011020> { _try_to_wake_up + 0x110 } IF !CC JUMP pcrel (BP)

113 Target : <0x00011010> { _try_to_wake_up + 0x100 }

     Source : <0x0000b9bc> { _activate_task + 0x50 } RTS

114 Target : <0x0000b9aa> { _activate_task + 0x3e }

     Source : <0x0000f6da> { _start_rt_bandwidth + 0xd2 } RTS

115 Target : <0x0000f6d4> { _start_rt_bandwidth + 0xcc }

     Source : <0x0000f634> { _start_rt_bandwidth + 0x2c } IF !CC JUMP pcrel

116 Target : <0x0000f608> { _start_rt_bandwidth + 0x0 }

     Source : <0x0000f776> { ___enqueue_rt_entity + 0x86 } CALL pcrel

117 Target : <0x0000f75e> { ___enqueue_rt_entity + 0x6e }

     Source : <0x0000f75a> { ___enqueue_rt_entity + 0x6a } IF CC JUMP pcrel (BP)

118 Target : <0x0000f724> { ___enqueue_rt_entity + 0x34 }

     Source : <0x0000f792> { ___enqueue_rt_entity + 0xa2 } JUMP.S

119 Target : <0x0000f77a> { ___enqueue_rt_entity + 0x8a }

     Source : <0x0000f718> { ___enqueue_rt_entity + 0x28 } IF CC JUMP pcrel (BP)

120 Target : <0x0000f6f0> { ___enqueue_rt_entity + 0x0 }

     Source : <0x0000f7d0> { _enqueue_task_rt + 0x30 } CALL pcrel

121 Target : <0x0000f7c2> { _enqueue_task_rt + 0x22 }

     Source : <0x0000be6a> { _dequeue_rt_stack + 0xae } RTS

122 Target : <0x0000be64> { _dequeue_rt_stack + 0xa8 }

     Source : <0x0000be08> { _dequeue_rt_stack + 0x4c } IF CC JUMP pcrel

123 Target : <0x0000be04> { _dequeue_rt_stack + 0x48 }

     Source : <0x0000be14> { _dequeue_rt_stack + 0x58 } IF CC JUMP pcrel

124 Target : <0x0000be10> { _dequeue_rt_stack + 0x54 }

     Source : <0x0000bde8> { _dequeue_rt_stack + 0x2c } JUMP.S

125 Target : <0x0000bdbc> { _dequeue_rt_stack + 0x0 }

     Source : <0x0000f7be> { _enqueue_task_rt + 0x1e } JUMP.L

126 Target : <0x0000f7a0> { _enqueue_task_rt + 0x0 }

     Source : <0x0000b9a8> { _activate_task + 0x3c } CALL (P2)

127 Target : <0x0000b982> { _activate_task + 0x16 }

     Source : <0x0000b97a> { _activate_task + 0xe } IF CC JUMP pcrel (BP)

128 Target : <0x0000b96c> { _activate_task + 0x0 }

     Source : <0x0001100c> { _try_to_wake_up + 0xfc } JUMP.L

129 Target : <0x00011006> { _try_to_wake_up + 0xf6 }

     Source : <0x00010f54> { _try_to_wake_up + 0x44 } IF CC JUMP pcrel

130 Target : <0x00010f3e> { _try_to_wake_up + 0x2e }

     Source : <0x000065dc> { _sched_clock + 0x58 } RTS

131 Target : <0x000065a8> { _sched_clock + 0x24 }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

132 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x000065a4> { _sched_clock + 0x20 } JUMP.L

133 Target : <0x00006584> { _sched_clock + 0x0 }

     Source : <0x0002e00a> { _sched_clock_cpu + 0x16 } JUMP (P2)

134 Target : <0x0002dff4> { _sched_clock_cpu + 0x0 }

     Source : <0x00010f3a> { _try_to_wake_up + 0x2a } JUMP.L

135 Target : <0x00010f36> { _try_to_wake_up + 0x26 }

     Source : <0x0000fa9e> { _task_rq_lock + 0x52 } RTS

136 Target : <0x0000fa4c> { _task_rq_lock + 0x0 }

     Source : <0x00010f32> { _try_to_wake_up + 0x22 } CALL pcrel

137 Target : <0x00010f10> { _try_to_wake_up + 0x0 }

     Source : <0x000110bc> { _default_wake_function + 0xc } CALL pcrel

138 Target : <0x000110b0> { _default_wake_function + 0x0 }

     Source : <0x00028bde> { _autoremove_wake_function + 0xe } JUMP.L

139 Target : <0x00028bd0> { _autoremove_wake_function + 0x0 }

     Source : <0x0000c410> { ___wake_up_common + 0x38 } CALL (P2)

140 Target : <0x0000c404> { ___wake_up_common + 0x2c }

     Source : <0x0000c3fc> { ___wake_up_common + 0x24 } JUMP.S

141 Target : <0x0000c3d8> { ___wake_up_common + 0x0 }

     Source : <0x000101c2> { ___wake_up + 0x22 } CALL pcrel

142 Target : <0x000101a0> { ___wake_up + 0x0 }

 

Thread A is woken up (above)...

 

 

     Source : <0x0360543a> { :detradrv:_GpioInterruptHandlerA + 0x2e } CALL (P2)

143 Target : <0x0360540c> { :detradrv:_GpioInterruptHandlerA + 0x0 }

 

Handler of IT A - first stage - is entered here (above).

 

 

     Source : <0x0003b948> { _handle_IRQ_event + 0x88 } CALL (P2)

144 Target : <0x0003b942> { _handle_IRQ_event + 0x82 }

     Source : <0x0003b900> { _handle_IRQ_event + 0x40 } IF CC JUMP pcrel (BP)

145 Target : <0x0003b8c0> { _handle_IRQ_event + 0x0 }

     Source : <0x0003d6a6> { _handle_simple_irq + 0x56 } CALL pcrel

146 Target : <0x0003d650> { _handle_simple_irq + 0x0 }

     Source : <0x00004860> { _asm_do_IRQ + 0x70 } CALL (P1)

147 Target : <0x00004858> { _asm_do_IRQ + 0x68 }

     Source : <0x0003b482> { _irq_to_desc + 0x1a } RTS

148 Target : <0x0003b468> { _irq_to_desc + 0x0 }

     Source : <0x00004854> { _asm_do_IRQ + 0x64 } JUMP.L

149 Target : <0x00004852> { _asm_do_IRQ + 0x62 }

     Source : <0x00004812> { _asm_do_IRQ + 0x22 } IF CC JUMP pcrel (BP)

150 Target : <0x0000480c> { _asm_do_IRQ + 0x1c }

     Source : <0x00034fca> { _tick_check_idle + 0x6e } RTS

151 Target : <0x00034fbc> { _tick_check_idle + 0x60 }

     Source : <0x00034e12> { _tick_do_update_jiffies64 + 0x96 } RTS

152 Target : <0x00034e0a> { _tick_do_update_jiffies64 + 0x8e }

     Source : <0x00034eda> { _tick_do_update_jiffies64 + 0x15e } IF !CC JUMP pcrel (BP)

153 Target : <0x00034ed6> { _tick_do_update_jiffies64 + 0x15a }

     Source : <0x00034db6> { _tick_do_update_jiffies64 + 0x3a } IF CC JUMP pcrel

154 Target : <0x00034d7c> { _tick_do_update_jiffies64 + 0x0 }

     Source : <0x00034fb8> { _tick_check_idle + 0x5c } JUMP.L

155 Target : <0x00034f92> { _tick_check_idle + 0x36 }

     Source : <0x00034fda> { _tick_check_idle + 0x7e } IF !CC JUMP pcrel (BP)

156 Target : <0x00034fd6> { _tick_check_idle + 0x7a }

     Source : <0x00034a9c> { _tick_nohz_stop_idle + 0x6c } RTS

157 Target : <0x00034a8e> { _tick_nohz_stop_idle + 0x5e }

     Source : <0x00034a7c> { _tick_nohz_stop_idle + 0x4c } IF CC JUMP pcrel

158 Target : <0x00034a30> { _tick_nohz_stop_idle + 0x0 }

     Source : <0x00034fd2> { _tick_check_idle + 0x76 } CALL pcrel

159 Target : <0x00034fcc> { _tick_check_idle + 0x70 }

     Source : <0x00034f88> { _tick_check_idle + 0x2c } IF !CC JUMP pcrel

160 Target : <0x00034f7e> { _tick_check_idle + 0x22 }

     Source : <0x000312d0> { _ktime_get + 0xe4 } RTS

161 Target : <0x000312c8> { _ktime_get + 0xdc }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

162 Target : <0x0002c408> { _ktime_add_ns + 0x9c }

     Source : <0x0002c3f6> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

163 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

164 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x000312c4> { _ktime_get + 0xd8 } JUMP.L

165 Target : <0x0003127a> { _ktime_get + 0x8e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

166 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00031276> { _ktime_get + 0x8a } JUMP.L

167 Target : <0x0003124c> { _ktime_get + 0x60 }

     Source : <0x00006580> { _bfin_read_cycles + 0x4 } RTS

168 Target : <0x0000657c> { _bfin_read_cycles + 0x0 }

     Source : <0x0003124a> { _ktime_get + 0x5e } CALL (P2)

169 Target : <0x00031222> { _ktime_get + 0x36 }

     Source : <0x00031216> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

170 Target : <0x000311ec> { _ktime_get + 0x0 }

     Source : <0x00034f7a> { _tick_check_idle + 0x1e } CALL pcrel

171 Target : <0x00034f7a> { _tick_check_idle + 0x1e }

     Source : <0x00034f72> { _tick_check_idle + 0x16 } IF !CC JUMP pcrel

172 Target : <0x00034f5c> { _tick_check_idle + 0x0 }

     Source : <0x0001886a> { _irq_enter + 0x52 } CALL pcrel

173 Target : <0x0001885c> { _irq_enter + 0x44 }

     Source : <0x00018842> { _irq_enter + 0x2a } IF CC JUMP pcrel

174 Target : <0x00018826> { _irq_enter + 0xe }

     Source : <0x0000c4a4> { _idle_cpu + 0x1c } RTS

175 Target : <0x0000c488> { _idle_cpu + 0x0 }

     Source : <0x00018822> { _irq_enter + 0xa } JUMP.L

176 Target : <0x00018820> { _irq_enter + 0x8 }

     Source : <0x0003e350> { _rcu_irq_enter + 0x20 } RTS

177 Target : <0x0003e346> { _rcu_irq_enter + 0x16 }

     Source : <0x0003e342> { _rcu_irq_enter + 0x12 } IF CC JUMP pcrel

178 Target : <0x0003e330> { _rcu_irq_enter + 0x0 }

     Source : <0x0001881c> { _irq_enter + 0x4 } CALL pcrel

179 Target : <0x00018818> { _irq_enter + 0x0 }

     Source : <0x00004808> { _asm_do_IRQ + 0x18 } JUMP.L

180 Target : <0x000047f0> { _asm_do_IRQ + 0x0 }

     Source : <0x0000b0e8> { _do_irq + 0x88 } CALL pcrel

181 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

182 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

183 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

184 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

185 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

186 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

187 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

188 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

189 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

190 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

191 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

192 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

193 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

194 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

195 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

196 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

197 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

198 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

199 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

200 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

201 Target : <0x0000b0b8> { _do_irq + 0x58 }

     Source : <0x0000b0de> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

202 Target : <0x0000b0c0> { _do_irq + 0x60 }

     Source : <0x0000b0b6> { _do_irq + 0x56 } JUMP.S

203 Target : <0x0000b060> { _do_irq + 0x0 }

     Source : <0x0000ab3a> { __common_int_entry + 0x72 } JUMP.L

204 Target : <0x0000aac8> { __common_int_entry + 0x0 }

     Source : <0x0000ad12> { _evt_evt11 + 0xa } JUMP.S

205 Target : <0x0000ad08> { _evt_evt11 + 0x0 }

 

IT A (first stage) hits here. We enter in it (above).

 

     Source : <0x00001628> { _default_idle + 0x1c } STI R0

206 Target : <0x0000160c> { _default_idle + 0x0 }

 

We come back in <idle> (above) after thread B enters in waiting (below).

 

 

     Source : <0x00001d4c> { _cpu_idle + 0x3c } CALL (P5)

207 Target : <0x00001d42> { _cpu_idle + 0x32 }

     Source : <0x000354c6> { _tick_nohz_stop_sched_tick + 0x46 } RTS

208 Target : <0x000354a8> { _tick_nohz_stop_sched_tick + 0x28 }

     Source : <0x00035702> { _tick_nohz_stop_sched_tick + 0x282 } JUMP.S

209 Target : <0x000356fa> { _tick_nohz_stop_sched_tick + 0x27a }

     Source : <0x000357aa> { _tick_nohz_stop_sched_tick + 0x32a } JUMP.S

210 Target : <0x000357a0> { _tick_nohz_stop_sched_tick + 0x320 }

     Source : <0x000356f8> { _tick_nohz_stop_sched_tick + 0x278 } IF CC JUMP pcrel

211 Target : <0x000356d4> { _tick_nohz_stop_sched_tick + 0x254 }

     Source : <0x00035714> { _tick_nohz_stop_sched_tick + 0x294 } IF !CC JUMP pcrel (BP)

212 Target : <0x00035710> { _tick_nohz_stop_sched_tick + 0x290 }

     Source : <0x0002c668> { _hrtimer_start + 0x18 } RTS

213 Target : <0x0002c664> { _hrtimer_start + 0x14 }

     Source : <0x0002c4d6> { ___hrtimer_start_range_ns + 0xae } RTS

214 Target : <0x0002c4ce> { ___hrtimer_start_range_ns + 0xa6 }

     Source : <0x0002c4c8> { ___hrtimer_start_range_ns + 0xa0 } IF CC JUMP pcrel (BP)

215 Target : <0x0002c4b6> { ___hrtimer_start_range_ns + 0x8e }

     Source : <0x0002c4a8> { ___hrtimer_start_range_ns + 0x80 } IF CC JUMP pcrel (BP)

216 Target : <0x0002c4a2> { ___hrtimer_start_range_ns + 0x7a }

     Source : <0x0002c492> { ___hrtimer_start_range_ns + 0x6a } IF CC JUMP pcrel (BP)

217 Target : <0x0002c490> { ___hrtimer_start_range_ns + 0x68 }

     Source : <0x0002bce4> { _enqueue_hrtimer + 0xa8 } RTS

218 Target : <0x0002bcd6> { _enqueue_hrtimer + 0x9a }

     Source : <0x000fbfca> { _rb_insert_color + 0x66 } RTS

219 Target : <0x000fbfb8> { _rb_insert_color + 0x54 }

     Source : <0x000fbf84> { _rb_insert_color + 0x20 } IF !CC JUMP pcrel

220 Target : <0x000fbf64> { _rb_insert_color + 0x0 }

     Source : <0x0002bcd2> { _enqueue_hrtimer + 0x96 } CALL pcrel

221 Target : <0x0002bcc4> { _enqueue_hrtimer + 0x88 }

     Source : <0x0002bcc0> { _enqueue_hrtimer + 0x84 } IF CC JUMP pcrel

222 Target : <0x0002bc8e> { _enqueue_hrtimer + 0x52 }

     Source : <0x0002bc52> { _enqueue_hrtimer + 0x16 } IF CC JUMP pcrel (BP)

223 Target : <0x0002bc3c> { _enqueue_hrtimer + 0x0 }

     Source : <0x0002c48c> { ___hrtimer_start_range_ns + 0x64 } CALL pcrel

224 Target : <0x0002c484> { ___hrtimer_start_range_ns + 0x5c }

     Source : <0x0002b7a4> { _ktime_add_safe + 0x54 } RTS

225 Target : <0x0002b7a2> { _ktime_add_safe + 0x52 }

     Source : <0x0002b7b0> { _ktime_add_safe + 0x60 } IF !CC JUMP pcrel (BP)

226 Target : <0x0002b7aa> { _ktime_add_safe + 0x5a }

     Source : <0x0002b7bc> { _ktime_add_safe + 0x6c } JUMP.S

227 Target : <0x0002b7b8> { _ktime_add_safe + 0x68 }

     Source : <0x0002b7a8> { _ktime_add_safe + 0x58 } IF CC JUMP pcrel

228 Target : <0x0002b7a6> { _ktime_add_safe + 0x56 }

     Source : <0x0002b798> { _ktime_add_safe + 0x48 } IF CC JUMP pcrel (BP)

229 Target : <0x0002b78e> { _ktime_add_safe + 0x3e }

     Source : <0x0002b77a> { _ktime_add_safe + 0x2a } IF CC JUMP pcrel (BP)

230 Target : <0x0002b750> { _ktime_add_safe + 0x0 }

     Source : <0x0002c480> { ___hrtimer_start_range_ns + 0x58 } CALL pcrel

231 Target : <0x0002c474> { ___hrtimer_start_range_ns + 0x4c }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

232 Target : <0x0002c408> { _ktime_add_ns + 0x9c }

     Source : <0x0002c3f6> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

233 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

234 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x0002c470> { ___hrtimer_start_range_ns + 0x48 } CALL pcrel

235 Target : <0x0002c456> { ___hrtimer_start_range_ns + 0x2e }

     Source : <0x0002c53a> { ___hrtimer_start_range_ns + 0x112 } IF CC JUMP pcrel (BP)

236 Target : <0x0002c534> { ___hrtimer_start_range_ns + 0x10c }

     Source : <0x0002baf0> { ___remove_hrtimer + 0x30 } RTS

237 Target : <0x0002bae8> { ___remove_hrtimer + 0x28 }

     Source : <0x000fc236> { _rb_erase + 0x82 } RTS

238 Target : <0x000fc230> { _rb_erase + 0x7c }

     Source : <0x000fc2b0> { _rb_erase + 0xfc } JUMP.S

239 Target : <0x000fc2ae> { _rb_erase + 0xfa }

     Source : <0x000fc290> { _rb_erase + 0xdc } IF CC JUMP pcrel

240 Target : <0x000fc282> { _rb_erase + 0xce }

     Source : <0x000fc272> { _rb_erase + 0xbe } IF CC JUMP pcrel

241 Target : <0x000fc262> { _rb_erase + 0xae }

     Source : <0x000fc1be> { _rb_erase + 0xa } IF CC JUMP pcrel

242 Target : <0x000fc1b4> { _rb_erase + 0x0 }

     Source : <0x0002bae4> { ___remove_hrtimer + 0x24 } CALL pcrel

243 Target : <0x0002bade> { ___remove_hrtimer + 0x1e }

     Source : <0x0002bb48> { ___remove_hrtimer + 0x88 } JUMP.S

244 Target : <0x0002bb48> { ___remove_hrtimer + 0x88 }

     Source : <0x000349fc> { _tick_program_event + 0x2c } RTS

245 Target : <0x000349f6> { _tick_program_event + 0x26 }

     Source : <0x00034982> { _tick_dev_program_event + 0x102 } RTS

246 Target : <0x0003497a> { _tick_dev_program_event + 0xfa }

     Source : <0x000348b8> { _tick_dev_program_event + 0x38 } IF CC JUMP pcrel

247 Target : <0x000348b6> { _tick_dev_program_event + 0x36 }

     Source : <0x00006600> { _bfin_coretmr_set_next_event + 0x20 } RTS

248 Target : <0x000065e0> { _bfin_coretmr_set_next_event + 0x0 }

     Source : <0x00033ec0> { _clockevents_program_event + 0xdc } JUMP (P2)

249 Target : <0x00033e90> { _clockevents_program_event + 0xac }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

250 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00033e8c> { _clockevents_program_event + 0xa8 } JUMP.L

251 Target : <0x00033e82> { _clockevents_program_event + 0x9e }

     Source : <0x00033ece> { _clockevents_program_event + 0xea } IF CC JUMP pcrel (BP)

252 Target : <0x00033ecc> { _clockevents_program_event + 0xe8 }

     Source : <0x00033e7e> { _clockevents_program_event + 0x9a } IF CC JUMP pcrel

253 Target : <0x00033e72> { _clockevents_program_event + 0x8e }

     Source : <0x00033ec4> { _clockevents_program_event + 0xe0 } IF !CC JUMP pcrel (BP)

254 Target : <0x00033ec2> { _clockevents_program_event + 0xde }

     Source : <0x00033e68> { _clockevents_program_event + 0x84 } IF CC JUMP pcrel (BP)

255 Target : <0x00033e46> { _clockevents_program_event + 0x62 }

     Source : <0x00033ef2> { _clockevents_program_event + 0x10e } JUMP.S

256 Target : <0x00033eee> { _clockevents_program_event + 0x10a }

     Source : <0x00033ed8> { _clockevents_program_event + 0xf4 } IF CC JUMP pcrel (BP)

257 Target : <0x00033ed6> { _clockevents_program_event + 0xf2 }

     Source : <0x00033e42> { _clockevents_program_event + 0x5e } IF CC JUMP pcrel

258 Target : <0x00033e32> { _clockevents_program_event + 0x4e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

259 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00033e2e> { _clockevents_program_event + 0x4a } JUMP.L

260 Target : <0x00033de4> { _clockevents_program_event + 0x0 }

     Source : <0x000348b2> { _tick_dev_program_event + 0x32 } JUMP.L

261 Target : <0x00034890> { _tick_dev_program_event + 0x10 }

     Source : <0x000312d0> { _ktime_get + 0xe4 } RTS

262 Target : <0x000312c8> { _ktime_get + 0xdc }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

263 Target : <0x0002c408> { _ktime_add_ns + 0x9c }

     Source : <0x0002c3f6> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

264 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

265 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x000312c4> { _ktime_get + 0xd8 } JUMP.L

266 Target : <0x0003127a> { _ktime_get + 0x8e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

267 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00031276> { _ktime_get + 0x8a } JUMP.L

268 Target : <0x0003124c> { _ktime_get + 0x60 }

     Source : <0x00006580> { _bfin_read_cycles + 0x4 } RTS

269 Target : <0x0000657c> { _bfin_read_cycles + 0x0 }

     Source : <0x0003124a> { _ktime_get + 0x5e } CALL (P2)

270 Target : <0x00031222> { _ktime_get + 0x36 }

     Source : <0x00031216> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

271 Target : <0x000311ec> { _ktime_get + 0x0 }

     Source : <0x0003488c> { _tick_dev_program_event + 0xc } JUMP.L

272 Target : <0x00034880> { _tick_dev_program_event + 0x0 }

     Source : <0x000349f2> { _tick_program_event + 0x22 } CALL pcrel

273 Target : <0x000349d0> { _tick_program_event + 0x0 }

     Source : <0x0002ba70> { _hrtimer_force_reprogram + 0x90 } CALL pcrel

274 Target : <0x0002ba54> { _hrtimer_force_reprogram + 0x74 }

     Source : <0x0002ba94> { _hrtimer_force_reprogram + 0xb4 } IF !CC JUMP pcrel (BP)

275 Target : <0x0002ba8a> { _hrtimer_force_reprogram + 0xaa }

     Source : <0x0002ba4e> { _hrtimer_force_reprogram + 0x6e } IF !CC JUMP pcrel (BP)

276 Target : <0x0002ba4c> { _hrtimer_force_reprogram + 0x6c }

     Source : <0x0002ba3c> { _hrtimer_force_reprogram + 0x5c } IF CC JUMP pcrel

277 Target : <0x0002ba38> { _hrtimer_force_reprogram + 0x58 }

     Source : <0x0002ba7e> { _hrtimer_force_reprogram + 0x9e } JUMP.S

278 Target : <0x0002ba7a> { _hrtimer_force_reprogram + 0x9a }

     Source : <0x0002ba32> { _hrtimer_force_reprogram + 0x52 } IF !CC JUMP pcrel (BP)

279 Target : <0x0002ba06> { _hrtimer_force_reprogram + 0x26 }

     Source : <0x0002ba48> { _hrtimer_force_reprogram + 0x68 } IF !CC JUMP pcrel (BP)

280 Target : <0x0002ba38> { _hrtimer_force_reprogram + 0x58 }

     Source : <0x0002ba00> { _hrtimer_force_reprogram + 0x20 } IF CC JUMP pcrel

281 Target : <0x0002b9e0> { _hrtimer_force_reprogram + 0x0 }

     Source : <0x0002bb44> { ___remove_hrtimer + 0x84 } CALL pcrel

282 Target : <0x0002baf6> { ___remove_hrtimer + 0x36 }

     Source : <0x000fc30e> { _rb_next + 0x2a } RTS

283 Target : <0x000fc30c> { _rb_next + 0x28 }

     Source : <0x000fc32c> { _rb_next + 0x48 } JUMP.S

284 Target : <0x000fc31e> { _rb_next + 0x3a }

     Source : <0x000fc318> { _rb_next + 0x34 } JUMP.S

285 Target : <0x000fc316> { _rb_next + 0x32 }

     Source : <0x000fc2fc> { _rb_next + 0x18 } IF CC JUMP pcrel

286 Target : <0x000fc2e4> { _rb_next + 0x0 }

     Source : <0x0002baf2> { ___remove_hrtimer + 0x32 } CALL pcrel

287 Target : <0x0002baf2> { ___remove_hrtimer + 0x32 }

     Source : <0x0002badc> { ___remove_hrtimer + 0x1c } IF CC JUMP pcrel

288 Target : <0x0002bac0> { ___remove_hrtimer + 0x0 }

     Source : <0x0002c530> { ___hrtimer_start_range_ns + 0x108 } JUMP.L

289 Target : <0x0002c51a> { ___hrtimer_start_range_ns + 0xf2 }

     Source : <0x0002c4e4> { ___hrtimer_start_range_ns + 0xbc } IF CC JUMP pcrel (BP)

290 Target : <0x0002c4d8> { ___hrtimer_start_range_ns + 0xb0 }

     Source : <0x0002c44c> { ___hrtimer_start_range_ns + 0x24 } IF !CC JUMP pcrel (BP)

291 Target : <0x0002c428> { ___hrtimer_start_range_ns + 0x0 }

     Source : <0x0002c660> { _hrtimer_start + 0x10 } JUMP.L

292 Target : <0x0002c650> { _hrtimer_start + 0x0 }

     Source : <0x0003570c> { _tick_nohz_stop_sched_tick + 0x28c } CALL pcrel

293 Target : <0x00035704> { _tick_nohz_stop_sched_tick + 0x284 }

     Source : <0x000356c4> { _tick_nohz_stop_sched_tick + 0x244 } IF CC JUMP pcrel

294 Target : <0x0003569a> { _tick_nohz_stop_sched_tick + 0x21a }

     Source : <0x0003e26a> { _rcu_enter_nohz + 0x2e } RTS

295 Target : <0x0003e26a> { _rcu_enter_nohz + 0x2e }

     Source : <0x0003e25c> { _rcu_enter_nohz + 0x20 } IF CC JUMP pcrel (BP)

296 Target : <0x0003e23c> { _rcu_enter_nohz + 0x0 }

     Source : <0x00035696> { _tick_nohz_stop_sched_tick + 0x216 } CALL pcrel

297 Target : <0x00035650> { _tick_nohz_stop_sched_tick + 0x1d0 }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

298 Target : <0x0002c3e0> { _ktime_add_ns + 0x74 }

     Source : <0x0002c3d0> { _ktime_add_ns + 0x64 } JUMP.S

299 Target : <0x0002c384> { _ktime_add_ns + 0x18 }

     Source : <0x0002c3dc> { _ktime_add_ns + 0x70 } IF !CC JUMP pcrel (BP)

300 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

301 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x0003564c> { _tick_nohz_stop_sched_tick + 0x1cc } JUMP.L

302 Target : <0x00035630> { _tick_nohz_stop_sched_tick + 0x1b0 }

     Source : <0x00035762> { _tick_nohz_stop_sched_tick + 0x2e2 } JUMP.S

303 Target : <0x0003575e> { _tick_nohz_stop_sched_tick + 0x2de }

     Source : <0x0003562a> { _tick_nohz_stop_sched_tick + 0x1aa } IF !CC JUMP pcrel (BP)

304 Target : <0x00035626> { _tick_nohz_stop_sched_tick + 0x1a6 }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

305 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00035622> { _tick_nohz_stop_sched_tick + 0x1a2 } JUMP.L

306 Target : <0x00035604> { _tick_nohz_stop_sched_tick + 0x184 }

     Source : <0x000357ce> { _tick_nohz_stop_sched_tick + 0x34e } IF !CC JUMP pcrel (BP)

307 Target : <0x000357c8> { _tick_nohz_stop_sched_tick + 0x348 }

     Source : <0x00035766> { _tick_nohz_stop_sched_tick + 0x2e6 } IF CC JUMP pcrel

308 Target : <0x00035764> { _tick_nohz_stop_sched_tick + 0x2e4 }

     Source : <0x000355f8> { _tick_nohz_stop_sched_tick + 0x178 } IF !CC JUMP pcrel (BP)

309 Target : <0x000355de> { _tick_nohz_stop_sched_tick + 0x15e }

     Source : <0x0003579e> { _tick_nohz_stop_sched_tick + 0x31e } JUMP.S

310 Target : <0x0003579a> { _tick_nohz_stop_sched_tick + 0x31a }

     Source : <0x0001e84a> { _get_next_timer_interrupt + 0xa2 } RTS

311 Target : <0x0001e840> { _get_next_timer_interrupt + 0x98 }

     Source : <0x0001e946> { _get_next_timer_interrupt + 0x19e } JUMP.S

312 Target : <0x0001e93c> { _get_next_timer_interrupt + 0x194 }

     Source : <0x0001e904> { _get_next_timer_interrupt + 0x15c } IF CC JUMP pcrel

313 Target : <0x0001e8fe> { _get_next_timer_interrupt + 0x156 }

     Source : <0x0002b944> { _hrtimer_get_next_event + 0xc8 } RTS

314 Target : <0x0002b920> { _hrtimer_get_next_event + 0xa4 }

     Source : <0x0002b912> { _hrtimer_get_next_event + 0x96 } IF CC JUMP pcrel (BP)

315 Target : <0x0002b90a> { _hrtimer_get_next_event + 0x8e }

     Source : <0x0002b8aa> { _hrtimer_get_next_event + 0x2e } IF !CC JUMP pcrel (BP)

316 Target : <0x0002b87c> { _hrtimer_get_next_event + 0x0 }

     Source : <0x0001e8fa> { _get_next_timer_interrupt + 0x152 } CALL pcrel

317 Target : <0x0001e8fa> { _get_next_timer_interrupt + 0x152 }

     Source : <0x0001e83c> { _get_next_timer_interrupt + 0x94 } IF CC JUMP pcrel

318 Target : <0x0001e822> { _get_next_timer_interrupt + 0x7a }

     Source : <0x0001e7d0> { _get_next_timer_interrupt + 0x28 } IF CC JUMP pcrel

319 Target : <0x0001e7a8> { _get_next_timer_interrupt + 0x0 }

     Source : <0x00035796> { _tick_nohz_stop_sched_tick + 0x316 } JUMP.L

320 Target : <0x00035790> { _tick_nohz_stop_sched_tick + 0x310 }

     Source : <0x00013656> { _printk_needs_cpu + 0xa } RTS

321 Target : <0x0001364c> { _printk_needs_cpu + 0x0 }

     Source : <0x0003578c> { _tick_nohz_stop_sched_tick + 0x30c } CALL pcrel

322 Target : <0x0003578c> { _tick_nohz_stop_sched_tick + 0x30c }

     Source : <0x000355d6> { _tick_nohz_stop_sched_tick + 0x156 } IF CC JUMP pcrel

323 Target : <0x000355d4> { _tick_nohz_stop_sched_tick + 0x154 }

     Source : <0x0003e524> { _rcu_needs_cpu + 0x20 } RTS

324 Target : <0x0003e516> { _rcu_needs_cpu + 0x12 }

     Source : <0x0003e510> { _rcu_needs_cpu + 0xc } IF CC JUMP pcrel

325 Target : <0x0003e504> { _rcu_needs_cpu + 0x0 }

     Source : <0x000355d0> { _tick_nohz_stop_sched_tick + 0x150 } CALL pcrel

326 Target : <0x000355c4> { _tick_nohz_stop_sched_tick + 0x144 }

     Source : <0x0002fee2> { _timekeeping_max_deferment + 0xe } RTS

327 Target : <0x0002fed4> { _timekeeping_max_deferment + 0x0 }

     Source : <0x000355c0> { _tick_nohz_stop_sched_tick + 0x140 } JUMP.L

328 Target : <0x000355b6> { _tick_nohz_stop_sched_tick + 0x136 }

     Source : <0x000355ac> { _tick_nohz_stop_sched_tick + 0x12c } IF CC JUMP pcrel (BP)

329 Target : <0x0003554a> { _tick_nohz_stop_sched_tick + 0xca }

     Source : <0x000354ea> { _tick_nohz_stop_sched_tick + 0x6a } IF CC JUMP pcrel (BP)

330 Target : <0x000354d8> { _tick_nohz_stop_sched_tick + 0x58 }

     Source : <0x000312d0> { _ktime_get + 0xe4 } RTS

331 Target : <0x000312c8> { _ktime_get + 0xdc }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

332 Target : <0x0002c408> { _ktime_add_ns + 0x9c }

     Source : <0x0002c3f6> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

333 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

334 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x000312c4> { _ktime_get + 0xd8 } JUMP.L

335 Target : <0x0003127a> { _ktime_get + 0x8e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

336 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00031276> { _ktime_get + 0x8a } JUMP.L

337 Target : <0x0003124c> { _ktime_get + 0x60 }

     Source : <0x00006580> { _bfin_read_cycles + 0x4 } RTS

338 Target : <0x0000657c> { _bfin_read_cycles + 0x0 }

     Source : <0x0003124a> { _ktime_get + 0x5e } CALL (P2)

339 Target : <0x00031222> { _ktime_get + 0x36 }

     Source : <0x00031216> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

340 Target : <0x000311ec> { _ktime_get + 0x0 }

     Source : <0x000354d4> { _tick_nohz_stop_sched_tick + 0x54 } JUMP.L

341 Target : <0x000354c8> { _tick_nohz_stop_sched_tick + 0x48 }

     Source : <0x00035498> { _tick_nohz_stop_sched_tick + 0x18 } IF !CC JUMP pcrel

342 Target : <0x00035480> { _tick_nohz_stop_sched_tick + 0x0 }

     Source : <0x00001d3e> { _cpu_idle + 0x2e } CALL pcrel

343 Target : <0x00001d34> { _cpu_idle + 0x24 }

     Source : <0x00001d68> { _cpu_idle + 0x58 } JUMP.S

344 Target : <0x00001d62> { _cpu_idle + 0x52 }

     Source : <0x001bc27a> { _schedule + 0x2be } RTS

345 Target : <0x001bc260> { _schedule + 0x2a4 }

     Source : <0x001bc256> { _schedule + 0x29a } IF CC JUMP pcrel

346 Target : <0x001bc248> { _schedule + 0x28c }

     Source : <0x0001025e> { _finish_task_switch + 0x5e } RTS

347 Target : <0x00010250> { _finish_task_switch + 0x50 }

     Source : <0x00010266> { _finish_task_switch + 0x66 } IF !CC JUMP pcrel (BP)

348 Target : <0x00010260> { _finish_task_switch + 0x60 }

     Source : <0x0001024a> { _finish_task_switch + 0x4a } IF !CC JUMP pcrel (BP)

349 Target : <0x00010200> { _finish_task_switch + 0x0 }

     Source : <0x001bc244> { _schedule + 0x288 } CALL pcrel

350 Target : <0x001bc23a> { _schedule + 0x27e }

     Source : <0x0000a7be> { _new_old_task + 0x6 } RTS

351 Target : <0x0000a7b8> { _new_old_task + 0x0 }

     Source : <0x0000a7b6> { _resume + 0x2e } JUMP (P0)

352 Target : <0x0000a788> { _resume + 0x0 }

     Source : <0x001bc236> { _schedule + 0x27a } JUMP.L

353 Target : <0x001bc232> { _schedule + 0x276 }

     Source : <0x000ff57e> { _memcpy + 0x2e } RTS

354 Target : <0x000ff564> { _memcpy + 0x14 }

     Source : <0x000ff55c> { _memcpy + 0xc } IF !CC JUMP pcrel

355 Target : <0x000ff550> { _memcpy + 0x0 }

     Source : <0x001bc22e> { _schedule + 0x272 } CALL pcrel

356 Target : <0x001bc222> { _schedule + 0x266 }

     Source : <0x000ff57e> { _memcpy + 0x2e } RTS

357 Target : <0x000ff550> { _memcpy + 0x0 }

     Source : <0x001bc21e> { _schedule + 0x262 } CALL pcrel

358 Target : <0x001bc1fa> { _schedule + 0x23e }

     Source : <0x001bc1ec> { _schedule + 0x230 } IF CC JUMP pcrel (BP)

359 Target : <0x001bc1c8> { _schedule + 0x20c }

     Source : <0x001bc182> { _schedule + 0x1c6 } IF CC JUMP pcrel (BP)

360 Target : <0x001bc144> { _schedule + 0x188 }

     Source : <0x0000ba60> { _pick_next_task_idle + 0x3c } RTS

361 Target : <0x0000ba58> { _pick_next_task_idle + 0x34 }

     Source : <0x0000ba38> { _pick_next_task_idle + 0x14 } IF CC JUMP pcrel

362 Target : <0x0000ba24> { _pick_next_task_idle + 0x0 }

     Source : <0x001bc142> { _schedule + 0x186 } CALL (P2)

363 Target : <0x001bc134> { _schedule + 0x178 }

     Source : <0x001bc148> { _schedule + 0x18c } IF CC JUMP pcrel (BP)

364 Target : <0x001bc144> { _schedule + 0x188 }

     Source : <0x0000d8d2> { _pick_next_task_fair + 0x82 } RTS

365 Target : <0x0000d8cc> { _pick_next_task_fair + 0x7c }

     Source : <0x0000d85c> { _pick_next_task_fair + 0xc } IF CC JUMP pcrel

366 Target : <0x0000d850> { _pick_next_task_fair + 0x0 }

     Source : <0x001bc142> { _schedule + 0x186 } CALL (P2)

367 Target : <0x001bc134> { _schedule + 0x178 }

     Source : <0x001bc148> { _schedule + 0x18c } IF CC JUMP pcrel (BP)

368 Target : <0x001bc144> { _schedule + 0x188 }

     Source : <0x0000c062> { _pick_next_task_rt + 0x1a } RTS

369 Target : <0x0000c048> { _pick_next_task_rt + 0x0 }

     Source : <0x001bc142> { _schedule + 0x186 } CALL (P2)

370 Target : <0x001bc138> { _schedule + 0x17c }

     Source : <0x001bc132> { _schedule + 0x176 } JUMP.S

371 Target : <0x001bc12a> { _schedule + 0x16e }

     Source : <0x001bc2a0> { _schedule + 0x2e4 } JUMP.S

372 Target : <0x001bc29a> { _schedule + 0x2de }

     Source : <0x0000d8d2> { _pick_next_task_fair + 0x82 } RTS

373 Target : <0x0000d8cc> { _pick_next_task_fair + 0x7c }

     Source : <0x0000d85c> { _pick_next_task_fair + 0xc } IF CC JUMP pcrel

374 Target : <0x0000d850> { _pick_next_task_fair + 0x0 }

     Source : <0x001bc296> { _schedule + 0x2da } JUMP.L

375 Target : <0x001bc28e> { _schedule + 0x2d2 }

     Source : <0x001bc128> { _schedule + 0x16c } IF CC JUMP pcrel

376 Target : <0x001bc11a> { _schedule + 0x15e }

     Source : <0x0000f5ea> { _put_prev_task_rt + 0x1e } RTS

377 Target : <0x0000f5d8> { _put_prev_task_rt + 0xc }

     Source : <0x0000f328> { _update_curr_rt + 0x1c } RTS

378 Target : <0x0000f322> { _update_curr_rt + 0x16 }

     Source : <0x0000f444> { _update_curr_rt + 0x138 } IF CC JUMP pcrel (BP)

379 Target : <0x0000f432> { _update_curr_rt + 0x126 }

     Source : <0x0000f4ae> { _update_curr_rt + 0x1a2 } IF CC JUMP pcrel (BP)

380 Target : <0x0000f4a6> { _update_curr_rt + 0x19a }

     Source : <0x0000f424> { _update_curr_rt + 0x118 } IF CC JUMP pcrel (BP)

381 Target : <0x0000f422> { _update_curr_rt + 0x116 }

     Source : <0x0000f46a> { _update_curr_rt + 0x15e } JUMP.S

382 Target : <0x0000f460> { _update_curr_rt + 0x154 }

     Source : <0x0000f420> { _update_curr_rt + 0x114 } IF CC JUMP pcrel (BP)

383 Target : <0x0000f410> { _update_curr_rt + 0x104 }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

384 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x0000f40c> { _update_curr_rt + 0x100 } CALL pcrel

385 Target : <0x0000f32a> { _update_curr_rt + 0x1e }

     Source : <0x0000f320> { _update_curr_rt + 0x14 } IF CC JUMP pcrel

386 Target : <0x0000f30c> { _update_curr_rt + 0x0 }

     Source : <0x0000f5d4> { _put_prev_task_rt + 0x8 } JUMP.L

387 Target : <0x0000f5cc> { _put_prev_task_rt + 0x0 }

     Source : <0x001bc118> { _schedule + 0x15c } CALL (P2)

388 Target : <0x001bc10a> { _schedule + 0x14e }

     Source : <0x001bc0aa> { _schedule + 0xee } IF !CC JUMP pcrel (BP)

389 Target : <0x001bc09e> { _schedule + 0xe2 }

     Source : <0x0000ba0c> { _deactivate_task + 0x40 } RTS

390 Target : <0x0000ba00> { _deactivate_task + 0x34 }

     Source : <0x0000b918> { _dequeue_task + 0x78 } RTS

391 Target : <0x0000b90c> { _dequeue_task + 0x6c }

     Source : <0x0000be6a> { _dequeue_rt_stack + 0xae } RTS

392 Target : <0x0000be64> { _dequeue_rt_stack + 0xa8 }

     Source : <0x0000be08> { _dequeue_rt_stack + 0x4c } IF CC JUMP pcrel

393 Target : <0x0000bdfe> { _dequeue_rt_stack + 0x42 }

     Source : <0x0000bdfa> { _dequeue_rt_stack + 0x3e } IF !CC JUMP pcrel (BP)

394 Target : <0x0000bdf4> { _dequeue_rt_stack + 0x38 }

     Source : <0x0000bdf0> { _dequeue_rt_stack + 0x34 } IF CC JUMP pcrel (BP)

395 Target : <0x0000bdea> { _dequeue_rt_stack + 0x2e }

     Source : <0x0000be62> { _dequeue_rt_stack + 0xa6 } JUMP.S

396 Target : <0x0000be10> { _dequeue_rt_stack + 0x54 }

     Source : <0x0000bde8> { _dequeue_rt_stack + 0x2c } JUMP.S

397 Target : <0x0000bdbc> { _dequeue_rt_stack + 0x0 }

     Source : <0x0000f604> { _dequeue_task_rt + 0x18 } CALL pcrel

398 Target : <0x0000f5f8> { _dequeue_task_rt + 0xc }

     Source : <0x0000f328> { _update_curr_rt + 0x1c } RTS

399 Target : <0x0000f322> { _update_curr_rt + 0x16 }

     Source : <0x0000f444> { _update_curr_rt + 0x138 } IF CC JUMP pcrel (BP)

400 Target : <0x0000f432> { _update_curr_rt + 0x126 }

     Source : <0x0000f4ae> { _update_curr_rt + 0x1a2 } IF CC JUMP pcrel (BP)

401 Target : <0x0000f4a6> { _update_curr_rt + 0x19a }

     Source : <0x0000f424> { _update_curr_rt + 0x118 } IF CC JUMP pcrel (BP)

402 Target : <0x0000f422> { _update_curr_rt + 0x116 }

     Source : <0x0000f46a> { _update_curr_rt + 0x15e } JUMP.S

403 Target : <0x0000f460> { _update_curr_rt + 0x154 }

     Source : <0x0000f420> { _update_curr_rt + 0x114 } IF CC JUMP pcrel (BP)

404 Target : <0x0000f410> { _update_curr_rt + 0x104 }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

405 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x0000f40c> { _update_curr_rt + 0x100 } CALL pcrel

406 Target : <0x0000f32a> { _update_curr_rt + 0x1e }

     Source : <0x0000f320> { _update_curr_rt + 0x14 } IF CC JUMP pcrel

407 Target : <0x0000f30c> { _update_curr_rt + 0x0 }

     Source : <0x0000f5f4> { _dequeue_task_rt + 0x8 } JUMP.L

408 Target : <0x0000f5ec> { _dequeue_task_rt + 0x0 }

     Source : <0x0000b90a> { _dequeue_task + 0x6a } CALL (P2)

409 Target : <0x0000b8a0> { _dequeue_task + 0x0 }

     Source : <0x0000b9fc> { _deactivate_task + 0x30 } CALL pcrel

410 Target : <0x0000b9f8> { _deactivate_task + 0x2c }

     Source : <0x0000b9da> { _deactivate_task + 0xe } IF CC JUMP pcrel

411 Target : <0x0000b9cc> { _deactivate_task + 0x0 }

     Source : <0x001bc09a> { _schedule + 0xde } JUMP.L

412 Target : <0x001bc064> { _schedule + 0xa8 }

     Source : <0x001bc056> { _schedule + 0x9a } IF CC JUMP pcrel (BP)

413 Target : <0x001bc036> { _schedule + 0x7a }

     Source : <0x000065dc> { _sched_clock + 0x58 } RTS

414 Target : <0x000065a8> { _sched_clock + 0x24 }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

415 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x000065a4> { _sched_clock + 0x20 } JUMP.L

416 Target : <0x00006584> { _sched_clock + 0x0 }

     Source : <0x0002e00a> { _sched_clock_cpu + 0x16 } JUMP (P2)

417 Target : <0x0002dff4> { _sched_clock_cpu + 0x0 }

     Source : <0x001bc032> { _schedule + 0x76 } CALL pcrel

418 Target : <0x001bc020> { _schedule + 0x64 }

     Source : <0x001bc010> { _schedule + 0x54 } IF CC JUMP pcrel

419 Target : <0x001bbfe8> { _schedule + 0x2c }

     Source : <0x0003e1b0> { _rcu_sched_qs + 0x14 } RTS

420 Target : <0x0003e19c> { _rcu_sched_qs + 0x0 }

     Source : <0x001bbfe4> { _schedule + 0x28 } JUMP.L

421 Target : <0x001bbfbc> { _schedule + 0x0 }

 

Thread B enters in sleep: it waits on wait queue (above).

 

 

     Source : <0x0360525a> { :detradrv:_kThreadItB + 0xa6 } CALL (P7)

422 Target : <0x0360524a> { :detradrv:_kThreadItB + 0x96 }

     Source : <0x0360526a> { :detradrv:_kThreadItB + 0xb6 } IF CC JUMP pcrel (BP)

423 Target : <0x03605264> { :detradrv:_kThreadItB + 0xb0 }

     Source : <0x00028e10> { _prepare_to_wait + 0x58 } RTS

424 Target : <0x00028ddc> { _prepare_to_wait + 0x24 }

     Source : <0x00028e20> { _prepare_to_wait + 0x68 } JUMP.S

425 Target : <0x00028e16> { _prepare_to_wait + 0x5e }

     Source : <0x00028dda> { _prepare_to_wait + 0x22 } IF CC JUMP pcrel

426 Target : <0x00028db8> { _prepare_to_wait + 0x0 }

     Source : <0x03605262> { :detradrv:_kThreadItB + 0xae } CALL (P5)

427 Target : <0x0360525c> { :detradrv:_kThreadItB + 0xa8 }

     Source : <0x03605248> { :detradrv:_kThreadItB + 0x94 } JUMP.S

428 Target : <0x03605218> { :detradrv:_kThreadItB + 0x64 }

     Source : <0x03605288> { :detradrv:_kThreadItB + 0xd4 } JUMP.S

429 Target : <0x0360527a> { :detradrv:_kThreadItB + 0xc6 }

 

Sheduling into thread B is finishing here; we enter in thread B (above)

 

 

 

     Source : <0x00028d2e> { _finish_wait + 0x52 } RTS

430 Target : <0x00028d1a> { _finish_wait + 0x3e }

     Source : <0x00028d3c> { _finish_wait + 0x60 } JUMP.S

431 Target : <0x00028d30> { _finish_wait + 0x54 }

     Source : <0x00028d18> { _finish_wait + 0x3c } IF !CC JUMP pcrel (BP)

432 Target : <0x00028cdc> { _finish_wait + 0x0 }

     Source : <0x03605278> { :detradrv:_kThreadItB + 0xc4 } CALL (P2)

433 Target : <0x03605264> { :detradrv:_kThreadItB + 0xb0 }

     Source : <0x00028e10> { _prepare_to_wait + 0x58 } RTS

434 Target : <0x00028ddc> { _prepare_to_wait + 0x24 }

     Source : <0x00028e20> { _prepare_to_wait + 0x68 } JUMP.S

435 Target : <0x00028e16> { _prepare_to_wait + 0x5e }

     Source : <0x00028dda> { _prepare_to_wait + 0x22 } IF CC JUMP pcrel

436 Target : <0x00028db8> { _prepare_to_wait + 0x0 }

     Source : <0x03605262> { :detradrv:_kThreadItB + 0xae } CALL (P5)

437 Target : <0x0360525c> { :detradrv:_kThreadItB + 0xa8 }

     Source : <0x001bc27a> { _schedule + 0x2be } RTS

438 Target : <0x001bc260> { _schedule + 0x2a4 }

     Source : <0x001bc256> { _schedule + 0x29a } IF CC JUMP pcrel

439 Target : <0x001bc248> { _schedule + 0x28c }

     Source : <0x0001025e> { _finish_task_switch + 0x5e } RTS

440 Target : <0x00010250> { _finish_task_switch + 0x50 }

     Source : <0x00010266> { _finish_task_switch + 0x66 } IF !CC JUMP pcrel (BP)

441 Target : <0x00010260> { _finish_task_switch + 0x60 }

     Source : <0x0001024a> { _finish_task_switch + 0x4a } IF !CC JUMP pcrel (BP)

442 Target : <0x00010200> { _finish_task_switch + 0x0 }

     Source : <0x001bc244> { _schedule + 0x288 } CALL pcrel

443 Target : <0x001bc23a> { _schedule + 0x27e }

     Source : <0x0000a7be> { _new_old_task + 0x6 } RTS

444 Target : <0x0000a7b8> { _new_old_task + 0x0 }

     Source : <0x0000a7b6> { _resume + 0x2e } JUMP (P0)

445 Target : <0x0000a788> { _resume + 0x0 }

     Source : <0x001bc236> { _schedule + 0x27a } JUMP.L

446 Target : <0x001bc232> { _schedule + 0x276 }

     Source : <0x000ff57e> { _memcpy + 0x2e } RTS

447 Target : <0x000ff564> { _memcpy + 0x14 }

     Source : <0x000ff55c> { _memcpy + 0xc } IF !CC JUMP pcrel

448 Target : <0x000ff550> { _memcpy + 0x0 }

     Source : <0x001bc22e> { _schedule + 0x272 } CALL pcrel

449 Target : <0x001bc222> { _schedule + 0x266 }

     Source : <0x000ff57e> { _memcpy + 0x2e } RTS

450 Target : <0x000ff550> { _memcpy + 0x0 }

     Source : <0x001bc21e> { _schedule + 0x262 } CALL pcrel

451 Target : <0x001bc1fa> { _schedule + 0x23e }

     Source : <0x001bc1ec> { _schedule + 0x230 } IF CC JUMP pcrel (BP)

452 Target : <0x001bc1c8> { _schedule + 0x20c }

     Source : <0x001bc182> { _schedule + 0x1c6 } IF CC JUMP pcrel (BP)

453 Target : <0x001bc144> { _schedule + 0x188 }

     Source : <0x0000c062> { _pick_next_task_rt + 0x1a } RTS

454 Target : <0x0000c05a> { _pick_next_task_rt + 0x12 }

     Source : <0x0000c096> { _pick_next_task_rt + 0x4e } JUMP.S

455 Target : <0x0000c078> { _pick_next_task_rt + 0x30 }

     Source : <0x0000bfee> { _pick_next_rt_entity + 0xf2 } RTS

456 Target : <0x0000bfd2> { _pick_next_rt_entity + 0xd6 }

     Source : <0x0000bfcc> { _pick_next_rt_entity + 0xd0 } IF !CC JUMP pcrel (BP)

457 Target : <0x0000bfc6> { _pick_next_rt_entity + 0xca }

     Source : <0x0000bfc0> { _pick_next_rt_entity + 0xc4 } IF !CC JUMP pcrel (BP)

458 Target : <0x0000bf9e> { _pick_next_rt_entity + 0xa2 }

     Source : <0x0000bf50> { _pick_next_rt_entity + 0x54 } IF CC JUMP pcrel (BP)

459 Target : <0x0000bf4a> { _pick_next_rt_entity + 0x4e }

     Source : <0x0000bf06> { _pick_next_rt_entity + 0xa } IF CC JUMP pcrel (BP)

460 Target : <0x0000befc> { _pick_next_rt_entity + 0x0 }

     Source : <0x0000c074> { _pick_next_task_rt + 0x2c } CALL pcrel

461 Target : <0x0000c064> { _pick_next_task_rt + 0x1c }

     Source : <0x0000c056> { _pick_next_task_rt + 0xe } IF !CC JUMP pcrel

462 Target : <0x0000c048> { _pick_next_task_rt + 0x0 }

     Source : <0x001bc142> { _schedule + 0x186 } CALL (P2)

463 Target : <0x001bc138> { _schedule + 0x17c }

     Source : <0x001bc132> { _schedule + 0x176 } JUMP.S

464 Target : <0x001bc11a> { _schedule + 0x15e }

     Source : <0x0000ba80> { _put_prev_task_idle + 0x8 } RTS

465 Target : <0x0000ba78> { _put_prev_task_idle + 0x0 }

     Source : <0x001bc118> { _schedule + 0x15c } CALL (P2)

466 Target : <0x001bc0a4> { _schedule + 0xe8 }

     Source : <0x001bc06a> { _schedule + 0xae } IF CC JUMP pcrel (BP)

467 Target : <0x001bc064> { _schedule + 0xa8 }

     Source : <0x001bc056> { _schedule + 0x9a } IF CC JUMP pcrel (BP)

468 Target : <0x001bc036> { _schedule + 0x7a }

     Source : <0x000065dc> { _sched_clock + 0x58 } RTS

469 Target : <0x000065a8> { _sched_clock + 0x24 }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

470 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x000065a4> { _sched_clock + 0x20 } JUMP.L

471 Target : <0x00006584> { _sched_clock + 0x0 }

     Source : <0x0002e00a> { _sched_clock_cpu + 0x16 } JUMP (P2)

472 Target : <0x0002dff4> { _sched_clock_cpu + 0x0 }

     Source : <0x001bc032> { _schedule + 0x76 } CALL pcrel

473 Target : <0x001bc020> { _schedule + 0x64 }

     Source : <0x001bc010> { _schedule + 0x54 } IF CC JUMP pcrel

474 Target : <0x001bbfe8> { _schedule + 0x2c }

     Source : <0x0003e1b0> { _rcu_sched_qs + 0x14 } RTS

475 Target : <0x0003e19c> { _rcu_sched_qs + 0x0 }

     Source : <0x001bbfe4> { _schedule + 0x28 } JUMP.L

476 Target : <0x001bbfbc> { _schedule + 0x0 }

     Source : <0x00001d5e> { _cpu_idle + 0x4e } CALL pcrel

477 Target : <0x00001d58> { _cpu_idle + 0x48 }

     Source : <0x00035466> { _tick_nohz_restart_sched_tick + 0xe6 } RTS

478 Target : <0x0003545c> { _tick_nohz_restart_sched_tick + 0xdc }

     Source : <0x0003537e> { _tick_nohz_restart + 0xb6 } RTS

479 Target : <0x00035376> { _tick_nohz_restart + 0xae }

     Source : <0x0003533e> { _tick_nohz_restart + 0x76 } IF !CC JUMP pcrel

480 Target : <0x0003533a> { _tick_nohz_restart + 0x72 }

     Source : <0x0002c684> { _hrtimer_start_range_ns + 0x18 } RTS

481 Target : <0x0002c680> { _hrtimer_start_range_ns + 0x14 }

     Source : <0x0002c4d6> { ___hrtimer_start_range_ns + 0xae } RTS

482 Target : <0x0002c4ce> { ___hrtimer_start_range_ns + 0xa6 }

     Source : <0x001bc4fc> { _preempt_schedule + 0x1c } RTS

483 Target : <0x001bc4e0> { _preempt_schedule + 0x0 }

     Source : <0x0002c4ca> { ___hrtimer_start_range_ns + 0xa2 } JUMP.L

484 Target : <0x0002c4b6> { ___hrtimer_start_range_ns + 0x8e }

     Source : <0x0002c4a8> { ___hrtimer_start_range_ns + 0x80 } IF CC JUMP pcrel (BP)

485 Target : <0x0002c4a2> { ___hrtimer_start_range_ns + 0x7a }

     Source : <0x0002c5e2> { ___hrtimer_start_range_ns + 0x1ba } IF CC JUMP pcrel

486 Target : <0x0002c5d0> { ___hrtimer_start_range_ns + 0x1a8 }

     Source : <0x000349fc> { _tick_program_event + 0x2c } RTS

487 Target : <0x000349f6> { _tick_program_event + 0x26 }

     Source : <0x00034982> { _tick_dev_program_event + 0x102 } RTS

488 Target : <0x0003497a> { _tick_dev_program_event + 0xfa }

     Source : <0x000348b8> { _tick_dev_program_event + 0x38 } IF CC JUMP pcrel

489 Target : <0x000348b6> { _tick_dev_program_event + 0x36 }

     Source : <0x00006600> { _bfin_coretmr_set_next_event + 0x20 } RTS

490 Target : <0x000065e0> { _bfin_coretmr_set_next_event + 0x0 }

     Source : <0x00033ec0> { _clockevents_program_event + 0xdc } JUMP (P2)

491 Target : <0x00033e90> { _clockevents_program_event + 0xac }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

492 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00033e8c> { _clockevents_program_event + 0xa8 } JUMP.L

493 Target : <0x00033e82> { _clockevents_program_event + 0x9e }

     Source : <0x00033ece> { _clockevents_program_event + 0xea } IF CC JUMP pcrel (BP)

494 Target : <0x00033ecc> { _clockevents_program_event + 0xe8 }

     Source : <0x00033e7e> { _clockevents_program_event + 0x9a } IF CC JUMP pcrel

495 Target : <0x00033e72> { _clockevents_program_event + 0x8e }

     Source : <0x00033ec4> { _clockevents_program_event + 0xe0 } IF !CC JUMP pcrel (BP)

496 Target : <0x00033ec2> { _clockevents_program_event + 0xde }

     Source : <0x00033e68> { _clockevents_program_event + 0x84 } IF CC JUMP pcrel (BP)

497 Target : <0x00033e46> { _clockevents_program_event + 0x62 }

     Source : <0x00033ef2> { _clockevents_program_event + 0x10e } JUMP.S

498 Target : <0x00033eee> { _clockevents_program_event + 0x10a }

     Source : <0x00033ed8> { _clockevents_program_event + 0xf4 } IF CC JUMP pcrel (BP)

499 Target : <0x00033ed6> { _clockevents_program_event + 0xf2 }

     Source : <0x00033e42> { _clockevents_program_event + 0x5e } IF CC JUMP pcrel

500 Target : <0x00033e32> { _clockevents_program_event + 0x4e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

501 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00033e2e> { _clockevents_program_event + 0x4a } JUMP.L

502 Target : <0x00033e1c> { _clockevents_program_event + 0x38 }

     Source : <0x00033e10> { _clockevents_program_event + 0x2c } IF !CC JUMP pcrel (BP)

503 Target : <0x00033de4> { _clockevents_program_event + 0x0 }

     Source : <0x000348b2> { _tick_dev_program_event + 0x32 } JUMP.L

504 Target : <0x00034890> { _tick_dev_program_event + 0x10 }

     Source : <0x000312d0> { _ktime_get + 0xe4 } RTS

505 Target : <0x000312c8> { _ktime_get + 0xdc }

     Source : <0x0002c410> { _ktime_add_ns + 0xa4 } RTS

506 Target : <0x0002c408> { _ktime_add_ns + 0x9c }

     Source : <0x0002c3f6> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

507 Target : <0x0002c3d2> { _ktime_add_ns + 0x66 }

     Source : <0x0002c382> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

508 Target : <0x0002c36c> { _ktime_add_ns + 0x0 }

     Source : <0x000312c4> { _ktime_get + 0xd8 } JUMP.L

509 Target : <0x0003127a> { _ktime_get + 0x8e }

     Source : <0x000ff70c> { ___muldi3 + 0x48 } RTS

510 Target : <0x000ff6c4> { ___muldi3 + 0x0 }

     Source : <0x00031276> { _ktime_get + 0x8a } JUMP.L

511 Target : <0x0003124c> { _ktime_get + 0x60 }

     Source : <0x00006580> { _bfin_read_cycles + 0x4 } RTS

512 Target : <0x0000657c> { _bfin_read_cycles + 0x0 }

     Source : <0x0003124a> { _ktime_get + 0x5e } CALL (P2)

513 Target : <0x00031222> { _ktime_get + 0x36 }

     Source : <0x00031216> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

514 Target : <0x000311ec> { _ktime_get + 0x0 }

     Source : <0x0003488c> { _tick_dev_program_event + 0xc } JUMP.L

515 Target : <0x00034880> { _tick_dev_program_event + 0x0 }

     Source : <0x000349f2> { _tick_program_event + 0x22 } CALL pcrel

516 Target : <0x000349d0> { _tick_program_event + 0x0 }

     Source : <0x0002c5cc> { ___hrtimer_start_range_ns + 0x1a4 } JUMP.L

517 Target : <0x0002c5b6> { ___hrtimer_start_range_ns + 0x18e }

     Source : <0x0002c5a0> { ___hrtimer_start_range_ns + 0x178 } IF !CC JUMP pcrel (BP)

518 Target : <0x0002c55c> { ___hrtimer_start_range_ns + 0x134 }

     Source : <0x0002c4a0> { ___hrtimer_start_range_ns + 0x78 } IF CC JUMP pcrel

 

Logically, we start from IT B, and we are sheduling into thread B

 

If needed I can create a longer trace, but I think it does not worth.

QuoteReplyEditDelete

 

 

2011-03-08 17:37:26     Re: Scheduling issue

Mike Frysinger (UNITED STATES)

Message: 98739   

 

i guess you actually work with Jeremie RAFIN, so i'll follow up with him in his thread at:

  blackfin.uclinux.org/gf/forumthread/44813

QuoteReplyEditDelete

 

 

2011-03-10 03:56:21     Re: Scheduling issue

Mike Frysinger (UNITED STATES)

Message: 98839   

 

in looking at this code, it seems like noise in the system could trigger it.  if timer A goes off, completes its work in the handler, and then some kernel driver is scheduled to do work (like the serial driver), the amount of time taken up would prevent kthread A from running and clearing the flag.  so when timer A goes off again, the bad state is caught and the timers are shut down.

 

for detecting the idle stall, you're just changing the "Got issue" call to a WARN() and then manually looking at the trace ?

QuoteReplyEditDelete

 

 

2011-03-10 07:24:49     Re: Scheduling issue

isabelle leonardi (FRANCE)

Message: 98848   

 

The goal of the module is to detect that between 2 ITs from timer A (about 0.5 ms), the thread A responsible for resetting the flag is not scheduled. When the second IT A detects that the flag is not reset, it wakes up the main thread which is responsible for printing the event. We updated the module so that the main thread displays the bfin "hardware" trace buffer. After the updated module code (below), there is a dump of the bfin trace buffer which shows that after the STI instruction done by _default_idle() at switch 204, there does be an IT (our IT A) that wakes up a thread but at the end of the IT, _default_idle() calls IDLE at switch 61.

 

NOTE: our linux implements the last suggestion from you (post at 2011-03-10 09:56:35 in   blackfin.uclinux.org/gf/forumthread/44813)

 

Here is the new module code:

 

/**********************************************************************************************

*                                     # i n c l u d e s                                      *

**********************************************************************************************/

 

#include <linux/init.h>

#include <linux/stddef.h>

#include <linux/types.h>

#include <linux/kthread.h>

#include <linux/debugfs.h>

#include <linux/list.h>

#include <asm/uaccess.h>

#include <linux/hrtimer.h>

#include <asm/io.h>

#include <linux/irq.h>

#include <linux/interrupt.h>

#include <asm/gpio.h>

#include <asm/portmux.h>

#include <asm/gptimers.h>

#include <linux/device.h>

#include <linux/delay.h>

#include <linux/hrtimer.h>

#include <asm/trace.h>

 

/**********************************************************************************************

*                             # d e f i n e s   a n d   e n u m                              *

**********************************************************************************************/

#define DETRA_MODULE_NAME "DETRACOM"

 

/* Configuration for first timer */

#define TIMERA_PORTMUX      P_TMR3

#define TIMERA_ID           TIMER3_id

#define TIMERA_BIT          TIMER3bit

#define TIMERA_PERIOD       (5*13000)       /* for 0.4ms */

//#define TIMERA_PERIOD       130000       /* for 1ms */

//#define TIMERA_PERIOD       260000       /* for 2ms */

#define TIMERA_CONFIG       (IRQ_ENA | PWM_OUT | PERIOD_CNT | EMU_RUN | PULSE_HI)

#define TIMERA_IT           IRQ_TIMER3

#define TIMERA_IT_MASK      0x00000008

 

/* Configuration for second timer */

#define TIMERB_PORTMUX      P_TMR7

#define TIMERB_ID           TIMER7_id

#define TIMERB_BIT          TIMER7bit

#define TIMERB_PERIOD_MIN   (5*1000)

#define TIMERB_PERIOD_MAX   (5*15000)

//#define TIMERB_PERIOD_MIN   33000

//#define TIMERB_PERIOD_MAX   35000

/*#define TIMERB_PERIOD_MIN   240000

#define TIMERB_PERIOD_MAX   300000*/

#define TIMERB_CONFIG       (IRQ_ENA | PWM_OUT | EMU_RUN | PULSE_HI)

#define TIMERB_IT           IRQ_TIMER7

#define TIMERB_IT_MASK      0x00080000

 

/**********************************************************************************************

*                                    D a t a   T y p e s                                     *

**********************************************************************************************/

 

/* Main context structure */

typedef struct

{

  /* Main variable to stop all */

  int NeedToEnd;

 

  /* Current TimerB period */

  uint32_t TimerBPeriod;

 

  /* Main state to trigger timers */

  int MainState;

 

  /* For Main thread */

  /*---------------- */

 

  /* Wait queue */

  wait_queue_head_t QueueSignalMain;

 

  /* Main tread task structure */

  struct task_struct *kThreadMain;

 

  /* Main thread priority */

  int ThreadPriorityMain;

 

  /* Variable used to wakeup main thread */

  int SignalEvent;

 

#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON

  int tflags;

#endif

 

  /* For IT A thread */

  /* ------------- */

 

  /* Wait queue */

  wait_queue_head_t QueueSignalItA;

 

  /* IT tread task structure */

  struct task_struct * kThreadItA;

 

  /* IT thread priority */

  int ThreadPriorityItA;

 

  /* Variable used to wakeup IT thread */

  int GotItA;

 

  /* Counter of IT */

  int ItCountA;

 

  /* For IT B thread */

  /* ------------- */

 

  /* Wait queue */

  wait_queue_head_t QueueSignalItB;

 

  /* IT tread task structure */

  struct task_struct * kThreadItB;

 

  /* IT thread priority */

  int ThreadPriorityItB;

 

  /* Variable used to wakeup IT thread */

  int GotItB;

 

  /* Counter of ITs */

  int ItACount;

  int ItBCount;

 

} DetracomContext_t;

 

/**********************************************************************************************

*                           F u n c t i o n   P r o t o t y p e s                            *

**********************************************************************************************/

 

/**********************************************************************************************

*                                     C o n s t a n t s                                      *

**********************************************************************************************/

 

/* None */

 

/**********************************************************************************************

*                                    L o c a l   D a t a                                     *

**********************************************************************************************/

 

/* Main context */

DetracomContext_t MainContext;

 

/**********************************************************************************************

*                          F u n c t i o n   D e f i n i t i o n s                           *

**********************************************************************************************/

/* To register a GPTIMER */

static int32_t GpTimerRegister(uint16_t     Portmux,

                               uint16_t     TimerId,

                               uint16_t     TimerBit,

                               uint16_t     TimerConfig,

                               uint32_t     TimerPeriod,

                               uint32_t     TimerWidth)

{

  /* Get the peripheral pins (PMUX) for the timer */

#if 0

  Status = peripheral_request(/* Peripheral mux */ Portmux,

                              /* Label          */ DETRA_MODULE_NAME);

 

  /* Check request status */

  if (Status != 0)

  {

    /* Already being used! */

    printk(KERN_ERR "GpTimerRegister: PMUX %d already is use (error %d)\n",

           Portmux,

           Status);

    return -EBUSY;

  }

#endif

 

  /* Disable the timer, just in case it is currently running */

  disable_gptimers(TimerBit);

 

  /* Enable output according to pin logic */

  set_gptimer_config(/* timer_id */ TimerId,

                     /* config   */ TimerConfig);

 

  /* Setup the timer period duration */

  set_gptimer_period(/* timer_id */ TimerId,

                     /* period   */ TimerPeriod);

 

  /* Setup the timer width duration; by default we assume it is a CLOCK (so a PWM ratio of 50%) */

  set_gptimer_pwidth(/* timer_id */ TimerId,

                     /* width    */ TimerWidth);

 

  /* Return success */

  return 0;

}

 

/* To unregister a GPTIMER */

static void GpTimerUnregister(uint16_t     Portmux,

                              uint16_t     TimerId,

                              uint16_t     TimerBit)

{

  /* Disable the timer */

  disable_gptimers(TimerBit);

 

#if 0

  /* Free the peripheral pins (PMUX) used for the timer */

  peripheral_free(Portmux);

#endif

}

 

/* Interrupt handler for timer A */

static irqreturn_t GpioInterruptHandlerA(int irq, void * dev_id)

{

  DetracomContext_t *pMainContext;

  uint32_t val32;

  int WakeupMain = 0;

  int WakeupIt = 0;

 

  /* Get the main context */

  pMainContext = dev_id;

 

  if (pMainContext->NeedToEnd != 0)

  {

    WakeupIt = 1;

    WakeupMain = 1;

  }

  else if (pMainContext->MainState == 0)

  {

    WakeupIt = 1;

    pMainContext->MainState = 1;

  }

  else

  {

    if (pMainContext->GotItA == 1)

    {

      trace_buffer_save(pMainContext->tflags);

      WakeupMain = 1;

    }

    else

    {

      set_gptimer_pwidth(/* timer_id */ TIMERB_ID,

                         /* width    */ pMainContext->TimerBPeriod);

      /*if (pMainContext->ItCountA > 10)*/

      if (pMainContext->ItCountA > 10)

      {

        pMainContext->TimerBPeriod++;

        if (pMainContext->TimerBPeriod == TIMERB_PERIOD_MAX)

        {

          pMainContext->TimerBPeriod = TIMERB_PERIOD_MIN;

        }

        pMainContext->ItCountA = 0;

      }

      enable_gptimers(TIMERB_BIT);

    }

    pMainContext->MainState = 0;

  }

  pMainContext->ItCountA++;

 

  if (WakeupIt == 1)

  {

    pMainContext->GotItA = 1;

    wake_up(&pMainContext->QueueSignalItA);

  }

  if (WakeupMain == 1)

  {

    disable_gptimers(TIMERA_BIT);

    disable_gptimers(TIMERB_BIT);

    pMainContext->SignalEvent = 1;

    wake_up(&pMainContext->QueueSignalMain);

  }

  pMainContext->ItACount++;

 

  /* Exit ISR */

  val32 = get_gptimer_status(0);

  set_gptimer_status(0, val32 & TIMERA_IT_MASK);

  return IRQ_HANDLED;

}

 

/* Interrupt handler for timer B */

static irqreturn_t GpioInterruptHandlerB(int irq, void * dev_id)

{

  DetracomContext_t *pMainContext;

  uint32_t val32;

 

  val32 = get_gptimer_status(0);

  set_gptimer_status(0, val32 & TIMERB_IT_MASK);

 

  /* Get the main context */

  pMainContext = dev_id;

 

  pMainContext->GotItB = 1;

  wake_up(&pMainContext->QueueSignalItB);

  pMainContext->ItBCount++;

  /* Exit ISR */

  return IRQ_HANDLED;

}

 

/* To register a GPIO with IT */

static int32_t GpioRegister(uint16_t       GpioInterruptId,

                            unsigned long  InterruptMode,

                            irq_handler_t  pIsr,

                            void          *pIsrParameter)

{

  int32_t Status;

 

  /* Request the system for the ISR */

  Status = request_irq(/* @irq: Interrupt line to allocate                      */ GpioInterruptId,

                       /* @handler: Function to be called when the IRQ occurs   */ pIsr,

                       /* @irqflags: Interrupt type flags                       */ InterruptMode,

                       /* @devname: An ascii name for the claiming device       */ DETRA_MODULE_NAME,

                       /* @dev_id: A cookie passed back to the handler function */ pIsrParameter);

 

  /* Check request status */

  if (Status != 0)

  {

    /* Already being used! */

    printk(KERN_ERR "GpioRegister: GPIO IRQ %d already is use (error %d)\n",

           GpioInterruptId,

           Status);

 

    return -EBUSY;

  }

 

  /* Return success */

  return 0;

}

 

/* To unregister a GPIO with IT */

static void GpioUnregister(uint16_t  GpioInterruptId,

                           void     *pIsrParameter)

{

  /* Free the IRQ line */

  free_irq(/* @irq: Interrupt line to free     */ GpioInterruptId,

           /* @dev_id: Device identity to free */ pIsrParameter);

}

 

/* IT thread A */

static int kThreadItA(void * data)

{

  DetracomContext_t *pMainContext = (DetracomContext_t *)data;

  struct sched_param SchedulerParameters;

  int32_t            Status;

 

  /* Change priority and scheduler (note: default is MAX (0)/OTHER) */

  SchedulerParameters.sched_priority = pMainContext->ThreadPriorityItA;

  Status = sched_setscheduler(current, SCHED_FIFO, &SchedulerParameters);

 

  /* Warn in case of priority problem */

  if (Status != 0)

  {

    printk(KERN_INFO "kThreadItA: set kthread priority error %d\n",

           Status);

  }

 

  /* Allow to be killed (-9) */

  allow_signal(SIGKILL);

 

  /* Small thread information */

  printk(KERN_INFO "kThreadItA: start...\n");

 

  /* Infinite loop */

  for (;;)

  {

    /* Normal condition: wait for a message, a timeout or any other event */

    /* ------------------------------------------------------------------ */

    Status = wait_event_interruptible(pMainContext->QueueSignalItA,

                                      pMainContext->GotItA != 0);

 

    if (pMainContext->NeedToEnd != 0)

    {

      printk(KERN_INFO "kThreadItA end\n");

      break;

    }

    pMainContext->GotItA = 0;

 

  }

  return(0);

}

 

/* IT thread B */

static int kThreadItB(void * data)

{

  DetracomContext_t *pMainContext = (DetracomContext_t *)data;

  struct sched_param SchedulerParameters;

  int32_t            Status;

 

  /* Change priority and scheduler (note: default is MAX (0)/OTHER) */

  SchedulerParameters.sched_priority = pMainContext->ThreadPriorityItB;

  Status = sched_setscheduler(current, SCHED_FIFO, &SchedulerParameters);

 

  /* Warn in case of priority problem */

  if (Status != 0)

  {

    printk(KERN_INFO "kThreadItB: set kthread priority error %d\n",

           Status);

  }

 

  /* Allow to be killed (-9) */

  allow_signal(SIGKILL);

 

  /* Small thread information */

  printk(KERN_INFO "kThreadItB: start...\n");

 

  /* Infinite loop */

  for (;;)

  {

    /* Normal condition: wait for a message, a timeout or any other event */

    /* ------------------------------------------------------------------ */

    Status = wait_event_interruptible(pMainContext->QueueSignalItB,

                                      pMainContext->GotItB != 0);

 

    if (pMainContext->NeedToEnd != 0)

    {

      printk(KERN_INFO "kThreadItB end\n");

      break;

    }

    /*if (Status > 0)*/

    {

      pMainContext->GotItB = 0;

    }

 

  }

  return(0);

}

 

/* Main thread */

static int kThreadMain(void * data)

{

  DetracomContext_t *pMainContext = (DetracomContext_t *)data;

  struct sched_param SchedulerParameters;

  int32_t            Status;

 

  /* Change priority and scheduler (note: default is MAX (0)/OTHER) */

  SchedulerParameters.sched_priority = pMainContext->ThreadPriorityMain;

  Status = sched_setscheduler(current, SCHED_FIFO, &SchedulerParameters);

 

  /* Warn in case of priority problem */

  if (Status != 0)

  {

    printk(KERN_INFO "kThreadMain: set kthread priority error %d\n",

           Status);

  }

 

  /* Allow to be killed (-9) */

  allow_signal(SIGKILL);

 

  /* Small thread information */

  printk(KERN_INFO "kThreadMain: start...\n");

 

  pMainContext->MainState = 0;

 

  /* Infinite loop */

  for (;;)

  {

    enable_gptimers(TIMERA_BIT);

 

    /* Normal condition: wait for a message, a timeout or any other event */

    /* ------------------------------------------------------------------ */

    Status = wait_event_interruptible(pMainContext->QueueSignalMain,

                                      pMainContext->SignalEvent != 0);

 

    if (pMainContext->NeedToEnd != 0)

    {

      printk(KERN_INFO "kThreadMain end\n");

      break;

    }

    if (pMainContext->SignalEvent == 1)

    {

      printk(KERN_INFO "Got issue - Count %d\n", pMainContext->TimerBPeriod);

      dump_bfin_trace_buffer();

      trace_buffer_restore(pMainContext->tflags);

      pMainContext->SignalEvent = 0;

    }

 

  }

  return(0);

}

 

/* Driver initialisation */

static int __init Detracom_Init(void)

{

  /* Context init */

  MainContext.NeedToEnd = 0;

 

  MainContext.GotItA = 0;

  init_waitqueue_head(&MainContext.QueueSignalItA);

  MainContext.ThreadPriorityItA = 40; // 59 HIGH

 

  init_waitqueue_head(&MainContext.QueueSignalItB);

  MainContext.ThreadPriorityItB = 10; // 99 VERY LOW

 

  MainContext.SignalEvent = 0;

  init_waitqueue_head(&MainContext.QueueSignalMain);

  MainContext.ThreadPriorityMain = 30; // 69 LOW

 

  /* Prepare timers */

  MainContext.TimerBPeriod = TIMERB_PERIOD_MIN;

  GpTimerRegister(TIMERA_PORTMUX, TIMERA_ID, TIMERA_BIT, TIMERA_CONFIG, TIMERA_PERIOD, TIMERA_PERIOD/2);

  GpTimerRegister(TIMERB_PORTMUX, TIMERB_ID, TIMERB_BIT, TIMERB_CONFIG, 0, MainContext.TimerBPeriod);

 

  GpioRegister(TIMERA_IT, IRQF_TRIGGER_FALLING, GpioInterruptHandlerA, &MainContext);

  GpioRegister(TIMERB_IT, IRQF_TRIGGER_FALLING, GpioInterruptHandlerB, &MainContext);

 

  /* Create the threads woken up by interrupts */

  MainContext.kThreadItA = kthread_run(kThreadItA, &MainContext, "%s", "DetraThreadItA");

  MainContext.kThreadItB = kthread_run(kThreadItB, &MainContext, "%s", "DetraThreadItB");

 

  /* Create the main thread */

  MainContext.kThreadMain = kthread_run(kThreadMain, &MainContext, "%s", "DetraThreadMain");

 

  /* Return success */

  return 0;

 

}

 

/* Driver exit */

static void __exit Detracom_Exit(void)

{

  printk(KERN_INFO "ItA %d - ItB %d\n", MainContext.ItACount, MainContext.ItBCount);

  MainContext.NeedToEnd = 1;

 

  MainContext.GotItB = 1;

  wake_up(&MainContext.QueueSignalItB);

 

  msleep(1000);

 

  GpioUnregister(TIMERA_IT, &MainContext);

  GpioUnregister(TIMERB_IT, &MainContext);

  GpTimerUnregister(TIMERA_PORTMUX, TIMERA_ID, TIMERA_BIT);

  GpTimerUnregister(TIMERB_PORTMUX, TIMERB_ID, TIMERB_BIT);

 

  msleep(1000);

}

 

 

/**********************************************************************************************

*                                 K e r n e l   a t t a c h                                  *

**********************************************************************************************/

 

/* Module functions */

module_init(Detracom_Init);

module_exit(Detracom_Exit);

 

MODULE_AUTHOR("DETRACOM");

MODULE_DESCRIPTION("Scheduler test driver");

MODULE_LICENSE("GPL");

 

Here is the trace displayed by the main thread when the wakeup failure is detected:

 

 

 

WARNING: Expanded trace turned on - can not trace exceptions

   0 Target : <0x02af4464> { :detradrv:_GpioInterruptHandlerA + 0x74 }

     Source : <0x02af4402> { :detradrv:_GpioInterruptHandlerA + 0x12 } IF !CC JUMP pcrel (BP)

   1 Target : <0x02af43f0> { :detradrv:_GpioInterruptHandlerA + 0x0 }

     Source : <0x0003ab48> { _handle_IRQ_event + 0x88 } CALL (P2)

   2 Target : <0x0003ab42> { _handle_IRQ_event + 0x82 }

     Source : <0x0003ab00> { _handle_IRQ_event + 0x40 } IF CC JUMP pcrel (BP)

   3 Target : <0x0003aac0> { _handle_IRQ_event + 0x0 }

     Source : <0x0003c76a> { _handle_simple_irq + 0x56 } CALL pcrel

   4 Target : <0x0003c766> { _handle_simple_irq + 0x52 }

     Source : <0x0003c7c6> { _handle_simple_irq + 0xb2 } JUMP.S

   5 Target : <0x0003c7c6> { _handle_simple_irq + 0xb2 }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

   6 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x0003c7c2> { _handle_simple_irq + 0xae } JUMP.L

   7 Target : <0x0003c7c2> { _handle_simple_irq + 0xae }

     Source : <0x0003c764> { _handle_simple_irq + 0x50 } IF !CC JUMP pcrel

   8 Target : <0x0003c714> { _handle_simple_irq + 0x0 }

     Source : <0x000047c8> { _asm_do_IRQ + 0x70 } CALL (P1)

   9 Target : <0x000047c0> { _asm_do_IRQ + 0x68 }

     Source : <0x0003a682> { _irq_to_desc + 0x1a } RTS

  10 Target : <0x0003a668> { _irq_to_desc + 0x0 }

     Source : <0x000047bc> { _asm_do_IRQ + 0x64 } CALL pcrel

  11 Target : <0x000047ba> { _asm_do_IRQ + 0x62 }

     Source : <0x0000477a> { _asm_do_IRQ + 0x22 } IF CC JUMP pcrel (BP)

  12 Target : <0x00004774> { _asm_do_IRQ + 0x1c }

     Source : <0x00034586> { _tick_check_idle + 0x6e } RTS

  13 Target : <0x00034578> { _tick_check_idle + 0x60 }

     Source : <0x000343ce> { _tick_do_update_jiffies64 + 0x96 } RTS

  14 Target : <0x000343c6> { _tick_do_update_jiffies64 + 0x8e }

     Source : <0x00034496> { _tick_do_update_jiffies64 + 0x15e } IF !CC JUMP pcrel (BP)

  15 Target : <0x00034492> { _tick_do_update_jiffies64 + 0x15a }

     Source : <0x00034372> { _tick_do_update_jiffies64 + 0x3a } IF CC JUMP pcrel

  16 Target : <0x00034338> { _tick_do_update_jiffies64 + 0x0 }

     Source : <0x00034574> { _tick_check_idle + 0x5c } JUMP.L

  17 Target : <0x0003453a> { _tick_check_idle + 0x22 }

     Source : <0x0003088c> { _ktime_get + 0xe4 } RTS

  18 Target : <0x00030884> { _ktime_get + 0xdc }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

  19 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

  20 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

  21 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x00030880> { _ktime_get + 0xd8 } CALL pcrel

  22 Target : <0x00030836> { _ktime_get + 0x8e }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

  23 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x00030832> { _ktime_get + 0x8a } JUMP.L

  24 Target : <0x00030808> { _ktime_get + 0x60 }

     Source : <0x000064f8> { _bfin_read_cycles + 0x4 } RTS

  25 Target : <0x000064f4> { _bfin_read_cycles + 0x0 }

     Source : <0x00030806> { _ktime_get + 0x5e } CALL (P2)

  26 Target : <0x000307de> { _ktime_get + 0x36 }

     Source : <0x000307d2> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

  27 Target : <0x000307a8> { _ktime_get + 0x0 }

     Source : <0x00034536> { _tick_check_idle + 0x1e } CALL pcrel

  28 Target : <0x00034518> { _tick_check_idle + 0x0 }

     Source : <0x000185b2> { _irq_enter + 0x52 } CALL pcrel

  29 Target : <0x000185a4> { _irq_enter + 0x44 }

     Source : <0x0001858a> { _irq_enter + 0x2a } IF CC JUMP pcrel

  30 Target : <0x0001856e> { _irq_enter + 0xe }

     Source : <0x0000c1f0> { _idle_cpu + 0x1c } RTS

  31 Target : <0x0000c1d4> { _idle_cpu + 0x0 }

     Source : <0x0001856a> { _irq_enter + 0xa } JUMP.L

  32 Target : <0x00018568> { _irq_enter + 0x8 }

     Source : <0x0003d414> { _rcu_irq_enter + 0x20 } RTS

  33 Target : <0x0003d40a> { _rcu_irq_enter + 0x16 }

     Source : <0x0003d406> { _rcu_irq_enter + 0x12 } IF CC JUMP pcrel

  34 Target : <0x0003d3f4> { _rcu_irq_enter + 0x0 }

     Source : <0x00018564> { _irq_enter + 0x4 } CALL pcrel

  35 Target : <0x00018560> { _irq_enter + 0x0 }

     Source : <0x00004770> { _asm_do_IRQ + 0x18 } JUMP.L

  36 Target : <0x00004758> { _asm_do_IRQ + 0x0 }

     Source : <0x0000ae34> { _do_irq + 0x88 } JUMP.L

  37 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  38 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  39 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  40 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  41 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  42 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  43 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  44 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  45 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  46 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  47 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  48 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  49 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  50 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  51 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  52 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  53 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  54 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  55 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  56 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  57 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

  58 Target : <0x0000ae0c> { _do_irq + 0x60 }

     Source : <0x0000ae02> { _do_irq + 0x56 } JUMP.S

  59 Target : <0x0000adac> { _do_irq + 0x0 }

     Source : <0x0000a886> { __common_int_entry + 0x72 } JUMP.L

  60 Target : <0x0000a814> { __common_int_entry + 0x0 }

     Source : <0x0000aa5e> { _evt_evt11 + 0xa } JUMP.S

  61 Target : <0x0000aa54> { _evt_evt11 + 0x0 }

     Source : <0xffa0002a> { _default_idle + 0x2a } IDLE

  62 Target : <0x0003d47e> { _rcu_irq_exit + 0x52 }

     Source : <0x0003d456> { _rcu_irq_exit + 0x2a } IF CC JUMP pcrel

  63 Target : <0x0003d440> { _rcu_irq_exit + 0x14 }

     Source : <0x0003d43c> { _rcu_irq_exit + 0x10 } IF CC JUMP pcrel

  64 Target : <0x0003d42c> { _rcu_irq_exit + 0x0 }

     Source : <0x000187a0> { _irq_exit + 0x34 } JUMP.L

  65 Target : <0x0001876c> { _irq_exit + 0x0 }

     Source : <0x000047ac> { _asm_do_IRQ + 0x54 } CALL pcrel

  66 Target : <0x000047ac> { _asm_do_IRQ + 0x54 }

     Source : <0x0000a67e> { _evt_evt14 + 0x6 } RTS

  67 Target : <0x0000a678> { _evt_evt14 + 0x0 }

     Source : <0x0000a676> { _lower_to_irq14 + 0x12 } RTI

  68 Target : <0x0000a664> { _lower_to_irq14 + 0x0 }

     Source : <0x000047a8> { _asm_do_IRQ + 0x50 } CALL pcrel

  69 Target : <0x0000478a> { _asm_do_IRQ + 0x32 }

     Source : <0x000047ca> { _asm_do_IRQ + 0x72 } JUMP.S

  70 Target : <0x000047ca> { _asm_do_IRQ + 0x72 }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

  71 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x0003c7be> { _handle_simple_irq + 0xaa } JUMP.L

  72 Target : <0x0003c7b8> { _handle_simple_irq + 0xa4 }

     Source : <0x0003c7a4> { _handle_simple_irq + 0x90 } IF !CC JUMP pcrel

  73 Target : <0x0003c77e> { _handle_simple_irq + 0x6a }

     Source : <0x0003c7b6> { _handle_simple_irq + 0xa2 } JUMP.S

  74 Target : <0x0003c7b6> { _handle_simple_irq + 0xa2 }

     Source : <0x0003bcfc> { _note_interrupt + 0x84 } RTS

  75 Target : <0x0003bce6> { _note_interrupt + 0x6e }

     Source : <0x0003bc94> { _note_interrupt + 0x1c } IF CC JUMP pcrel (BP)

  76 Target : <0x0003bc78> { _note_interrupt + 0x0 }

     Source : <0x0003c7b2> { _handle_simple_irq + 0x9e } JUMP.L

  77 Target : <0x0003c7ae> { _handle_simple_irq + 0x9a }

     Source : <0x0003c77c> { _handle_simple_irq + 0x68 } IF CC JUMP pcrel

  78 Target : <0x0003c76e> { _handle_simple_irq + 0x5a }

     Source : <0x0003abc4> { _handle_IRQ_event + 0x104 } RTS

  79 Target : <0x0003abb8> { _handle_IRQ_event + 0xf8 }

     Source : <0x0003abb0> { _handle_IRQ_event + 0xf0 } IF CC JUMP pcrel (BP)

  80 Target : <0x0003aba6> { _handle_IRQ_event + 0xe6 }

     Source : <0x0003ac08> { _handle_IRQ_event + 0x148 } JUMP.S

  81 Target : <0x0003ac04> { _handle_IRQ_event + 0x144 }

     Source : <0x0003ab9c> { _handle_IRQ_event + 0xdc } IF CC JUMP pcrel

  82 Target : <0x0003ab9a> { _handle_IRQ_event + 0xda }

     Source : <0x0003ab58> { _handle_IRQ_event + 0x98 } IF CC JUMP pcrel (BP)

  83 Target : <0x0003ab4a> { _handle_IRQ_event + 0x8a }

     Source : <0x02af4462> { :detradrv:_GpioInterruptHandlerA + 0x72 } RTS

  84 Target : <0x02af445a> { :detradrv:_GpioInterruptHandlerA + 0x6a }

     Source : <0x00006c48> { _set_gptimer_status + 0x24 } RTS

  85 Target : <0x00006c24> { _set_gptimer_status + 0x0 }

     Source : <0x02af4458> { :detradrv:_GpioInterruptHandlerA + 0x68 } CALL (P2)

  86 Target : <0x02af444a> { :detradrv:_GpioInterruptHandlerA + 0x5a }

     Source : <0x00006c90> { _get_gptimer_status + 0x20 } RTS

  87 Target : <0x00006c70> { _get_gptimer_status + 0x0 }

     Source : <0x02af4448> { :detradrv:_GpioInterruptHandlerA + 0x58 } CALL (P2)

  88 Target : <0x02af442e> { :detradrv:_GpioInterruptHandlerA + 0x3e }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

  89 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x0000ff48> { ___wake_up + 0x5c } JUMP.L

  90 Target : <0x0000ff42> { ___wake_up + 0x56 }

     Source : <0x0000ff38> { ___wake_up + 0x4c } IF !CC JUMP pcrel

  91 Target : <0x0000ff12> { ___wake_up + 0x26 }

     Source : <0x0000c17c> { ___wake_up_common + 0x58 } RTS

  92 Target : <0x0000c16c> { ___wake_up_common + 0x48 }

     Source : <0x0000c164> { ___wake_up_common + 0x40 } IF CC JUMP pcrel (BP)

  93 Target : <0x0000c15e> { ___wake_up_common + 0x3a }

     Source : <0x00028452> { _autoremove_wake_function + 0x32 } RTS

  94 Target : <0x00028432> { _autoremove_wake_function + 0x12 }

     Source : <0x00010d4a> { _try_to_wake_up + 0xee } RTS

  95 Target : <0x00010d42> { _try_to_wake_up + 0xe6 }

     Source : <0x00010df8> { _try_to_wake_up + 0x19c } JUMP.S

  96 Target : <0x00010df8> { _try_to_wake_up + 0x19c }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

  97 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x00010df4> { _try_to_wake_up + 0x198 } CALL pcrel

  98 Target : <0x00010df4> { _try_to_wake_up + 0x198 }

     Source : <0x00010d40> { _try_to_wake_up + 0xe4 } IF !CC JUMP pcrel

  99 Target : <0x00010d2e> { _try_to_wake_up + 0xd2 }

     Source : <0x00010d50> { _try_to_wake_up + 0xf4 } JUMP.S

100 Target : <0x00010d50> { _try_to_wake_up + 0xf4 }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

101 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x00010d4c> { _try_to_wake_up + 0xf0 } CALL pcrel

102 Target : <0x00010d4c> { _try_to_wake_up + 0xf0 }

     Source : <0x00010d2c> { _try_to_wake_up + 0xd0 } IF !CC JUMP pcrel

103 Target : <0x00010d1a> { _try_to_wake_up + 0xbe }

     Source : <0x00010d0c> { _try_to_wake_up + 0xb0 } IF CC JUMP pcrel (BP)

104 Target : <0x00010d00> { _try_to_wake_up + 0xa4 }

     Source : <0x0000b528> { _resched_task + 0x28 } RTS

105 Target : <0x0000b524> { _resched_task + 0x24 }

     Source : <0x0000b516> { _resched_task + 0x16 } IF CC JUMP pcrel (BP)

106 Target : <0x0000b500> { _resched_task + 0x0 }

     Source : <0x0000b76a> { _check_preempt_curr_idle + 0xe } JUMP.L

107 Target : <0x0000b75c> { _check_preempt_curr_idle + 0x0 }

     Source : <0x00010cfe> { _try_to_wake_up + 0xa2 } CALL (P2)

108 Target : <0x00010cf0> { _try_to_wake_up + 0x94 }

     Source : <0x00010cb0> { _try_to_wake_up + 0x54 } IF CC JUMP pcrel (BP)

109 Target : <0x00010ca4> { _try_to_wake_up + 0x48 }

     Source : <0x00010dde> { _try_to_wake_up + 0x182 } JUMP.S

110 Target : <0x00010ddc> { _try_to_wake_up + 0x180 }

     Source : <0x00010d6c> { _try_to_wake_up + 0x110 } IF !CC JUMP pcrel (BP)

111 Target : <0x00010d5c> { _try_to_wake_up + 0x100 }

     Source : <0x0000b708> { _activate_task + 0x50 } RTS

112 Target : <0x0000b6f6> { _activate_task + 0x3e }

     Source : <0x0000f426> { _start_rt_bandwidth + 0xd2 } RTS

113 Target : <0x0000f420> { _start_rt_bandwidth + 0xcc }

     Source : <0x0000f380> { _start_rt_bandwidth + 0x2c } IF !CC JUMP pcrel

114 Target : <0x0000f354> { _start_rt_bandwidth + 0x0 }

     Source : <0x0000f4c2> { ___enqueue_rt_entity + 0x86 } CALL pcrel

115 Target : <0x0000f4aa> { ___enqueue_rt_entity + 0x6e }

     Source : <0x0000f4a6> { ___enqueue_rt_entity + 0x6a } IF CC JUMP pcrel (BP)

116 Target : <0x0000f470> { ___enqueue_rt_entity + 0x34 }

     Source : <0x0000f4de> { ___enqueue_rt_entity + 0xa2 } JUMP.S

117 Target : <0x0000f4c6> { ___enqueue_rt_entity + 0x8a }

     Source : <0x0000f464> { ___enqueue_rt_entity + 0x28 } IF CC JUMP pcrel (BP)

118 Target : <0x0000f43c> { ___enqueue_rt_entity + 0x0 }

     Source : <0x0000f51c> { _enqueue_task_rt + 0x30 } CALL pcrel

119 Target : <0x0000f50e> { _enqueue_task_rt + 0x22 }

     Source : <0x0000bbb6> { _dequeue_rt_stack + 0xae } RTS

120 Target : <0x0000bbb0> { _dequeue_rt_stack + 0xa8 }

     Source : <0x0000bb54> { _dequeue_rt_stack + 0x4c } IF CC JUMP pcrel

121 Target : <0x0000bb50> { _dequeue_rt_stack + 0x48 }

     Source : <0x0000bb60> { _dequeue_rt_stack + 0x58 } IF CC JUMP pcrel

122 Target : <0x0000bb5c> { _dequeue_rt_stack + 0x54 }

     Source : <0x0000bb34> { _dequeue_rt_stack + 0x2c } JUMP.S

123 Target : <0x0000bb08> { _dequeue_rt_stack + 0x0 }

     Source : <0x0000f50a> { _enqueue_task_rt + 0x1e } JUMP.L

124 Target : <0x0000f4ec> { _enqueue_task_rt + 0x0 }

     Source : <0x0000b6f4> { _activate_task + 0x3c } CALL (P2)

125 Target : <0x0000b6ce> { _activate_task + 0x16 }

     Source : <0x0000b6c6> { _activate_task + 0xe } IF CC JUMP pcrel (BP)

126 Target : <0x0000b6b8> { _activate_task + 0x0 }

     Source : <0x00010d58> { _try_to_wake_up + 0xfc } JUMP.L

127 Target : <0x00010d52> { _try_to_wake_up + 0xf6 }

     Source : <0x00010ca0> { _try_to_wake_up + 0x44 } IF CC JUMP pcrel

128 Target : <0x00010c8a> { _try_to_wake_up + 0x2e }

     Source : <0x00006554> { _sched_clock + 0x58 } RTS

129 Target : <0x00006520> { _sched_clock + 0x24 }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

130 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x0000651c> { _sched_clock + 0x20 } CALL pcrel

131 Target : <0x000064fc> { _sched_clock + 0x0 }

     Source : <0x0002d71e> { _sched_clock_cpu + 0x16 } JUMP (P2)

132 Target : <0x0002d708> { _sched_clock_cpu + 0x0 }

     Source : <0x00010c86> { _try_to_wake_up + 0x2a } CALL pcrel

133 Target : <0x00010c82> { _try_to_wake_up + 0x26 }

     Source : <0x0000f7ea> { _task_rq_lock + 0x52 } RTS

134 Target : <0x0000f798> { _task_rq_lock + 0x0 }

     Source : <0x00010c7e> { _try_to_wake_up + 0x22 } CALL pcrel

135 Target : <0x00010c5c> { _try_to_wake_up + 0x0 }

     Source : <0x00010e08> { _default_wake_function + 0xc } CALL pcrel

136 Target : <0x00010dfc> { _default_wake_function + 0x0 }

     Source : <0x0002842e> { _autoremove_wake_function + 0xe } JUMP.L

137 Target : <0x00028420> { _autoremove_wake_function + 0x0 }

     Source : <0x0000c15c> { ___wake_up_common + 0x38 } CALL (P2)

138 Target : <0x0000c150> { ___wake_up_common + 0x2c }

     Source : <0x0000c148> { ___wake_up_common + 0x24 } JUMP.S

139 Target : <0x0000c124> { ___wake_up_common + 0x0 }

     Source : <0x0000ff0e> { ___wake_up + 0x22 } CALL pcrel

140 Target : <0x0000feec> { ___wake_up + 0x0 }

     Source : <0x02af442c> { :detradrv:_GpioInterruptHandlerA + 0x3c } CALL (P2)

141 Target : <0x02af440e> { :detradrv:_GpioInterruptHandlerA + 0x1e }

     Source : <0x02af440a> { :detradrv:_GpioInterruptHandlerA + 0x1a } JUMP.S

142 Target : <0x02af43f0> { :detradrv:_GpioInterruptHandlerA + 0x0 }

     Source : <0x0003ab48> { _handle_IRQ_event + 0x88 } CALL (P2)

143 Target : <0x0003ab42> { _handle_IRQ_event + 0x82 }

     Source : <0x0003ab00> { _handle_IRQ_event + 0x40 } IF CC JUMP pcrel (BP)

144 Target : <0x0003aac0> { _handle_IRQ_event + 0x0 }

     Source : <0x0003c76a> { _handle_simple_irq + 0x56 } CALL pcrel

145 Target : <0x0003c714> { _handle_simple_irq + 0x0 }

     Source : <0x000047c8> { _asm_do_IRQ + 0x70 } CALL (P1)

146 Target : <0x000047c0> { _asm_do_IRQ + 0x68 }

     Source : <0x0003a682> { _irq_to_desc + 0x1a } RTS

147 Target : <0x0003a668> { _irq_to_desc + 0x0 }

     Source : <0x000047bc> { _asm_do_IRQ + 0x64 } CALL pcrel

148 Target : <0x000047ba> { _asm_do_IRQ + 0x62 }

     Source : <0x0000477a> { _asm_do_IRQ + 0x22 } IF CC JUMP pcrel (BP)

149 Target : <0x00004774> { _asm_do_IRQ + 0x1c }

     Source : <0x00034586> { _tick_check_idle + 0x6e } RTS

150 Target : <0x00034578> { _tick_check_idle + 0x60 }

     Source : <0x000343ce> { _tick_do_update_jiffies64 + 0x96 } RTS

151 Target : <0x000343c6> { _tick_do_update_jiffies64 + 0x8e }

     Source : <0x00034496> { _tick_do_update_jiffies64 + 0x15e } IF !CC JUMP pcrel (BP)

152 Target : <0x00034492> { _tick_do_update_jiffies64 + 0x15a }

     Source : <0x00034372> { _tick_do_update_jiffies64 + 0x3a } IF CC JUMP pcrel

153 Target : <0x00034338> { _tick_do_update_jiffies64 + 0x0 }

     Source : <0x00034574> { _tick_check_idle + 0x5c } JUMP.L

154 Target : <0x0003454e> { _tick_check_idle + 0x36 }

     Source : <0x00034596> { _tick_check_idle + 0x7e } IF !CC JUMP pcrel (BP)

155 Target : <0x00034592> { _tick_check_idle + 0x7a }

     Source : <0x00034058> { _tick_nohz_stop_idle + 0x6c } RTS

156 Target : <0x0003404a> { _tick_nohz_stop_idle + 0x5e }

     Source : <0x00034038> { _tick_nohz_stop_idle + 0x4c } IF CC JUMP pcrel

157 Target : <0x00033fec> { _tick_nohz_stop_idle + 0x0 }

     Source : <0x0003458e> { _tick_check_idle + 0x76 } CALL pcrel

158 Target : <0x00034588> { _tick_check_idle + 0x70 }

     Source : <0x00034544> { _tick_check_idle + 0x2c } IF !CC JUMP pcrel

159 Target : <0x0003453a> { _tick_check_idle + 0x22 }

     Source : <0x0003088c> { _ktime_get + 0xe4 } RTS

160 Target : <0x00030884> { _ktime_get + 0xdc }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

161 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

162 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

163 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x00030880> { _ktime_get + 0xd8 } CALL pcrel

164 Target : <0x00030836> { _ktime_get + 0x8e }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

165 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x00030832> { _ktime_get + 0x8a } JUMP.L

166 Target : <0x00030808> { _ktime_get + 0x60 }

     Source : <0x000064f8> { _bfin_read_cycles + 0x4 } RTS

167 Target : <0x000064f4> { _bfin_read_cycles + 0x0 }

     Source : <0x00030806> { _ktime_get + 0x5e } CALL (P2)

168 Target : <0x000307de> { _ktime_get + 0x36 }

     Source : <0x000307d2> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

169 Target : <0x000307a8> { _ktime_get + 0x0 }

     Source : <0x00034536> { _tick_check_idle + 0x1e } CALL pcrel

170 Target : <0x00034536> { _tick_check_idle + 0x1e }

     Source : <0x0003452e> { _tick_check_idle + 0x16 } IF !CC JUMP pcrel

171 Target : <0x00034518> { _tick_check_idle + 0x0 }

     Source : <0x000185b2> { _irq_enter + 0x52 } CALL pcrel

172 Target : <0x000185a4> { _irq_enter + 0x44 }

     Source : <0x0001858a> { _irq_enter + 0x2a } IF CC JUMP pcrel

173 Target : <0x0001856e> { _irq_enter + 0xe }

     Source : <0x0000c1f0> { _idle_cpu + 0x1c } RTS

174 Target : <0x0000c1d4> { _idle_cpu + 0x0 }

     Source : <0x0001856a> { _irq_enter + 0xa } JUMP.L

175 Target : <0x00018568> { _irq_enter + 0x8 }

     Source : <0x0003d414> { _rcu_irq_enter + 0x20 } RTS

176 Target : <0x0003d40a> { _rcu_irq_enter + 0x16 }

     Source : <0x0003d406> { _rcu_irq_enter + 0x12 } IF CC JUMP pcrel

177 Target : <0x0003d3f4> { _rcu_irq_enter + 0x0 }

     Source : <0x00018564> { _irq_enter + 0x4 } CALL pcrel

178 Target : <0x00018560> { _irq_enter + 0x0 }

     Source : <0x00004770> { _asm_do_IRQ + 0x18 } JUMP.L

179 Target : <0x00004758> { _asm_do_IRQ + 0x0 }

     Source : <0x0000ae34> { _do_irq + 0x88 } JUMP.L

180 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

181 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

182 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

183 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

184 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

185 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

186 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

187 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

188 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

189 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

190 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

191 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

192 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

193 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

194 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

195 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

196 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

197 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

198 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

199 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

200 Target : <0x0000ae04> { _do_irq + 0x58 }

     Source : <0x0000ae2a> { _do_irq + 0x7e } IF CC JUMP pcrel (BP)

201 Target : <0x0000ae0c> { _do_irq + 0x60 }

     Source : <0x0000ae02> { _do_irq + 0x56 } JUMP.S

202 Target : <0x0000adac> { _do_irq + 0x0 }

     Source : <0x0000a886> { __common_int_entry + 0x72 } JUMP.L

203 Target : <0x0000a814> { __common_int_entry + 0x0 }

     Source : <0x0000aa5e> { _evt_evt11 + 0xa } JUMP.S

204 Target : <0x0000aa54> { _evt_evt11 + 0x0 }

     Source : <0xffa00028> { _default_idle + 0x28 } STI R0

205 Target : <0xffa00000> { _default_idle + 0x0 }

     Source : <0xffa0007c> { _cpu_idle + 0x3c } CALL (P5)

206 Target : <0xffa00072> { _cpu_idle + 0x32 }

     Source : <0x00034a82> { _tick_nohz_stop_sched_tick + 0x46 } RTS

207 Target : <0x00034a64> { _tick_nohz_stop_sched_tick + 0x28 }

     Source : <0x00034cbe> { _tick_nohz_stop_sched_tick + 0x282 } JUMP.S

208 Target : <0x00034cb6> { _tick_nohz_stop_sched_tick + 0x27a }

     Source : <0x00034d66> { _tick_nohz_stop_sched_tick + 0x32a } JUMP.S

209 Target : <0x00034d5c> { _tick_nohz_stop_sched_tick + 0x320 }

     Source : <0x00034cb4> { _tick_nohz_stop_sched_tick + 0x278 } IF CC JUMP pcrel

210 Target : <0x00034c90> { _tick_nohz_stop_sched_tick + 0x254 }

     Source : <0x00034cd0> { _tick_nohz_stop_sched_tick + 0x294 } IF !CC JUMP pcrel (BP)

211 Target : <0x00034ccc> { _tick_nohz_stop_sched_tick + 0x290 }

     Source : <0x0002beb8> { _hrtimer_start + 0x18 } RTS

212 Target : <0x0002beb4> { _hrtimer_start + 0x14 }

     Source : <0x0002bd26> { ___hrtimer_start_range_ns + 0xae } RTS

213 Target : <0x0002bd1e> { ___hrtimer_start_range_ns + 0xa6 }

     Source : <0x0002bd18> { ___hrtimer_start_range_ns + 0xa0 } IF CC JUMP pcrel (BP)

214 Target : <0x0002bd06> { ___hrtimer_start_range_ns + 0x8e }

     Source : <0x0002bcf8> { ___hrtimer_start_range_ns + 0x80 } IF CC JUMP pcrel (BP)

215 Target : <0x0002bcf2> { ___hrtimer_start_range_ns + 0x7a }

     Source : <0x0002bce2> { ___hrtimer_start_range_ns + 0x6a } IF CC JUMP pcrel (BP)

216 Target : <0x0002bce0> { ___hrtimer_start_range_ns + 0x68 }

     Source : <0x0002b534> { _enqueue_hrtimer + 0xa8 } RTS

217 Target : <0x0002b526> { _enqueue_hrtimer + 0x9a }

     Source : <0x000ee5aa> { _rb_insert_color + 0x66 } RTS

218 Target : <0x000ee598> { _rb_insert_color + 0x54 }

     Source : <0x000ee564> { _rb_insert_color + 0x20 } IF !CC JUMP pcrel

219 Target : <0x000ee544> { _rb_insert_color + 0x0 }

     Source : <0x0002b522> { _enqueue_hrtimer + 0x96 } JUMP.L

220 Target : <0x0002b514> { _enqueue_hrtimer + 0x88 }

     Source : <0x0002b510> { _enqueue_hrtimer + 0x84 } IF CC JUMP pcrel

221 Target : <0x0002b500> { _enqueue_hrtimer + 0x74 }

     Source : <0x0002b53c> { _enqueue_hrtimer + 0xb0 } IF CC JUMP pcrel (BP)

222 Target : <0x0002b536> { _enqueue_hrtimer + 0xaa }

     Source : <0x0002b4fe> { _enqueue_hrtimer + 0x72 } IF CC JUMP pcrel

223 Target : <0x0002b4f2> { _enqueue_hrtimer + 0x66 }

     Source : <0x0002b50c> { _enqueue_hrtimer + 0x80 } IF !CC JUMP pcrel (BP)

224 Target : <0x0002b508> { _enqueue_hrtimer + 0x7c }

     Source : <0x0002b544> { _enqueue_hrtimer + 0xb8 } JUMP.S

225 Target : <0x0002b53e> { _enqueue_hrtimer + 0xb2 }

     Source : <0x0002b4fa> { _enqueue_hrtimer + 0x6e } IF !CC JUMP pcrel (BP)

226 Target : <0x0002b4de> { _enqueue_hrtimer + 0x52 }

     Source : <0x0002b4a2> { _enqueue_hrtimer + 0x16 } IF CC JUMP pcrel (BP)

227 Target : <0x0002b48c> { _enqueue_hrtimer + 0x0 }

     Source : <0x0002bcdc> { ___hrtimer_start_range_ns + 0x64 } CALL pcrel

228 Target : <0x0002bcd4> { ___hrtimer_start_range_ns + 0x5c }

     Source : <0x0002aff4> { _ktime_add_safe + 0x54 } RTS

229 Target : <0x0002aff2> { _ktime_add_safe + 0x52 }

     Source : <0x0002b000> { _ktime_add_safe + 0x60 } IF !CC JUMP pcrel (BP)

230 Target : <0x0002affa> { _ktime_add_safe + 0x5a }

     Source : <0x0002b00c> { _ktime_add_safe + 0x6c } JUMP.S

231 Target : <0x0002b008> { _ktime_add_safe + 0x68 }

     Source : <0x0002aff8> { _ktime_add_safe + 0x58 } IF CC JUMP pcrel

232 Target : <0x0002aff6> { _ktime_add_safe + 0x56 }

     Source : <0x0002afe8> { _ktime_add_safe + 0x48 } IF CC JUMP pcrel (BP)

233 Target : <0x0002afde> { _ktime_add_safe + 0x3e }

     Source : <0x0002afca> { _ktime_add_safe + 0x2a } IF CC JUMP pcrel (BP)

234 Target : <0x0002afa0> { _ktime_add_safe + 0x0 }

     Source : <0x0002bcd0> { ___hrtimer_start_range_ns + 0x58 } CALL pcrel

235 Target : <0x0002bcc4> { ___hrtimer_start_range_ns + 0x4c }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

236 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

237 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

238 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x0002bcc0> { ___hrtimer_start_range_ns + 0x48 } CALL pcrel

239 Target : <0x0002bca6> { ___hrtimer_start_range_ns + 0x2e }

     Source : <0x0002bd8a> { ___hrtimer_start_range_ns + 0x112 } IF CC JUMP pcrel (BP)

240 Target : <0x0002bd84> { ___hrtimer_start_range_ns + 0x10c }

     Source : <0x0002b340> { ___remove_hrtimer + 0x30 } RTS

241 Target : <0x0002b338> { ___remove_hrtimer + 0x28 }

     Source : <0x000ee816> { _rb_erase + 0x82 } RTS

242 Target : <0x000ee810> { _rb_erase + 0x7c }

     Source : <0x000ee876> { _rb_erase + 0xe2 } JUMP.S

243 Target : <0x000ee862> { _rb_erase + 0xce }

     Source : <0x000ee852> { _rb_erase + 0xbe } IF CC JUMP pcrel

244 Target : <0x000ee842> { _rb_erase + 0xae }

     Source : <0x000ee79e> { _rb_erase + 0xa } IF CC JUMP pcrel

245 Target : <0x000ee794> { _rb_erase + 0x0 }

     Source : <0x0002b334> { ___remove_hrtimer + 0x24 } JUMP.L

246 Target : <0x0002b310> { ___remove_hrtimer + 0x0 }

     Source : <0x0002bd80> { ___hrtimer_start_range_ns + 0x108 } JUMP.L

247 Target : <0x0002bd6a> { ___hrtimer_start_range_ns + 0xf2 }

     Source : <0x0002bd34> { ___hrtimer_start_range_ns + 0xbc } IF CC JUMP pcrel (BP)

248 Target : <0x0002bd28> { ___hrtimer_start_range_ns + 0xb0 }

     Source : <0x0002bc9c> { ___hrtimer_start_range_ns + 0x24 } IF !CC JUMP pcrel (BP)

249 Target : <0x0002bc78> { ___hrtimer_start_range_ns + 0x0 }

     Source : <0x0002beb0> { _hrtimer_start + 0x10 } JUMP.L

250 Target : <0x0002bea0> { _hrtimer_start + 0x0 }

     Source : <0x00034cc8> { _tick_nohz_stop_sched_tick + 0x28c } JUMP.L

251 Target : <0x00034cc0> { _tick_nohz_stop_sched_tick + 0x284 }

     Source : <0x00034c80> { _tick_nohz_stop_sched_tick + 0x244 } IF CC JUMP pcrel

252 Target : <0x00034c56> { _tick_nohz_stop_sched_tick + 0x21a }

     Source : <0x0003d32e> { _rcu_enter_nohz + 0x2e } RTS

253 Target : <0x0003d32e> { _rcu_enter_nohz + 0x2e }

     Source : <0x0003d320> { _rcu_enter_nohz + 0x20 } IF CC JUMP pcrel (BP)

254 Target : <0x0003d300> { _rcu_enter_nohz + 0x0 }

     Source : <0x00034c52> { _tick_nohz_stop_sched_tick + 0x216 } CALL pcrel

255 Target : <0x00034c0c> { _tick_nohz_stop_sched_tick + 0x1d0 }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

256 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

257 Target : <0x0002bc30> { _ktime_add_ns + 0x74 }

     Source : <0x0002bc20> { _ktime_add_ns + 0x64 } JUMP.S

258 Target : <0x0002bbd4> { _ktime_add_ns + 0x18 }

     Source : <0x0002bc2c> { _ktime_add_ns + 0x70 } IF !CC JUMP pcrel (BP)

259 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

260 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x00034c08> { _tick_nohz_stop_sched_tick + 0x1cc } CALL pcrel

261 Target : <0x00034bec> { _tick_nohz_stop_sched_tick + 0x1b0 }

     Source : <0x00034d1e> { _tick_nohz_stop_sched_tick + 0x2e2 } JUMP.S

262 Target : <0x00034d1a> { _tick_nohz_stop_sched_tick + 0x2de }

     Source : <0x00034be6> { _tick_nohz_stop_sched_tick + 0x1aa } IF !CC JUMP pcrel (BP)

263 Target : <0x00034be2> { _tick_nohz_stop_sched_tick + 0x1a6 }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

264 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x00034bde> { _tick_nohz_stop_sched_tick + 0x1a2 } JUMP.L

265 Target : <0x00034bc0> { _tick_nohz_stop_sched_tick + 0x184 }

     Source : <0x00034d8a> { _tick_nohz_stop_sched_tick + 0x34e } IF !CC JUMP pcrel (BP)

266 Target : <0x00034d84> { _tick_nohz_stop_sched_tick + 0x348 }

     Source : <0x00034d22> { _tick_nohz_stop_sched_tick + 0x2e6 } IF CC JUMP pcrel

267 Target : <0x00034d20> { _tick_nohz_stop_sched_tick + 0x2e4 }

     Source : <0x00034bb4> { _tick_nohz_stop_sched_tick + 0x178 } IF !CC JUMP pcrel (BP)

268 Target : <0x00034b9a> { _tick_nohz_stop_sched_tick + 0x15e }

     Source : <0x00034d5a> { _tick_nohz_stop_sched_tick + 0x31e } JUMP.S

269 Target : <0x00034d56> { _tick_nohz_stop_sched_tick + 0x31a }

     Source : <0x0001e452> { _get_next_timer_interrupt + 0xa2 } RTS

270 Target : <0x0001e448> { _get_next_timer_interrupt + 0x98 }

     Source : <0x0001e54e> { _get_next_timer_interrupt + 0x19e } JUMP.S

271 Target : <0x0001e544> { _get_next_timer_interrupt + 0x194 }

     Source : <0x0001e50c> { _get_next_timer_interrupt + 0x15c } IF CC JUMP pcrel

272 Target : <0x0001e506> { _get_next_timer_interrupt + 0x156 }

     Source : <0x0002b194> { _hrtimer_get_next_event + 0xc8 } RTS

273 Target : <0x0002b170> { _hrtimer_get_next_event + 0xa4 }

     Source : <0x0002b162> { _hrtimer_get_next_event + 0x96 } IF CC JUMP pcrel (BP)

274 Target : <0x0002b15a> { _hrtimer_get_next_event + 0x8e }

     Source : <0x0002b0fa> { _hrtimer_get_next_event + 0x2e } IF !CC JUMP pcrel (BP)

275 Target : <0x0002b0cc> { _hrtimer_get_next_event + 0x0 }

     Source : <0x0001e502> { _get_next_timer_interrupt + 0x152 } CALL pcrel

276 Target : <0x0001e502> { _get_next_timer_interrupt + 0x152 }

     Source : <0x0001e444> { _get_next_timer_interrupt + 0x94 } IF CC JUMP pcrel

277 Target : <0x0001e42a> { _get_next_timer_interrupt + 0x7a }

     Source : <0x0001e3d8> { _get_next_timer_interrupt + 0x28 } IF CC JUMP pcrel

278 Target : <0x0001e3b0> { _get_next_timer_interrupt + 0x0 }

     Source : <0x00034d52> { _tick_nohz_stop_sched_tick + 0x316 } CALL pcrel

279 Target : <0x00034d4c> { _tick_nohz_stop_sched_tick + 0x310 }

     Source : <0x000133a2> { _printk_needs_cpu + 0xa } RTS

280 Target : <0x00013398> { _printk_needs_cpu + 0x0 }

     Source : <0x00034d48> { _tick_nohz_stop_sched_tick + 0x30c } CALL pcrel

281 Target : <0x00034d48> { _tick_nohz_stop_sched_tick + 0x30c }

     Source : <0x00034b92> { _tick_nohz_stop_sched_tick + 0x156 } IF CC JUMP pcrel

282 Target : <0x00034b90> { _tick_nohz_stop_sched_tick + 0x154 }

     Source : <0x0003d5e8> { _rcu_needs_cpu + 0x20 } RTS

283 Target : <0x0003d5da> { _rcu_needs_cpu + 0x12 }

     Source : <0x0003d5d4> { _rcu_needs_cpu + 0xc } IF CC JUMP pcrel

284 Target : <0x0003d5c8> { _rcu_needs_cpu + 0x0 }

     Source : <0x00034b8c> { _tick_nohz_stop_sched_tick + 0x150 } CALL pcrel

285 Target : <0x00034b80> { _tick_nohz_stop_sched_tick + 0x144 }

     Source : <0x0002f49e> { _timekeeping_max_deferment + 0xe } RTS

286 Target : <0x0002f490> { _timekeeping_max_deferment + 0x0 }

     Source : <0x00034b7c> { _tick_nohz_stop_sched_tick + 0x140 } JUMP.L

287 Target : <0x00034b72> { _tick_nohz_stop_sched_tick + 0x136 }

     Source : <0x00034b68> { _tick_nohz_stop_sched_tick + 0x12c } IF CC JUMP pcrel (BP)

288 Target : <0x00034b06> { _tick_nohz_stop_sched_tick + 0xca }

     Source : <0x00034aa6> { _tick_nohz_stop_sched_tick + 0x6a } IF CC JUMP pcrel (BP)

289 Target : <0x00034a94> { _tick_nohz_stop_sched_tick + 0x58 }

     Source : <0x0003088c> { _ktime_get + 0xe4 } RTS

290 Target : <0x00030884> { _ktime_get + 0xdc }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

291 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

292 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

293 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x00030880> { _ktime_get + 0xd8 } CALL pcrel

294 Target : <0x00030836> { _ktime_get + 0x8e }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

295 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x00030832> { _ktime_get + 0x8a } JUMP.L

296 Target : <0x00030808> { _ktime_get + 0x60 }

     Source : <0x000064f8> { _bfin_read_cycles + 0x4 } RTS

297 Target : <0x000064f4> { _bfin_read_cycles + 0x0 }

     Source : <0x00030806> { _ktime_get + 0x5e } CALL (P2)

298 Target : <0x000307de> { _ktime_get + 0x36 }

     Source : <0x000307d2> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

299 Target : <0x000307a8> { _ktime_get + 0x0 }

     Source : <0x00034a90> { _tick_nohz_stop_sched_tick + 0x54 } JUMP.L

300 Target : <0x00034a84> { _tick_nohz_stop_sched_tick + 0x48 }

     Source : <0x00034a54> { _tick_nohz_stop_sched_tick + 0x18 } IF !CC JUMP pcrel

301 Target : <0x00034a3c> { _tick_nohz_stop_sched_tick + 0x0 }

     Source : <0xffa0006e> { _cpu_idle + 0x2e } JUMP.L

302 Target : <0xffa00064> { _cpu_idle + 0x24 }

     Source : <0xffa00098> { _cpu_idle + 0x58 } JUMP.S

303 Target : <0xffa00092> { _cpu_idle + 0x52 }

     Source : <0x001a5242> { _schedule + 0x2be } RTS

304 Target : <0x001a5228> { _schedule + 0x2a4 }

     Source : <0x001a521e> { _schedule + 0x29a } IF CC JUMP pcrel

305 Target : <0x001a5210> { _schedule + 0x28c }

     Source : <0x0000ffaa> { _finish_task_switch + 0x5e } RTS

306 Target : <0x0000ff9c> { _finish_task_switch + 0x50 }

     Source : <0x0000ffb2> { _finish_task_switch + 0x66 } IF !CC JUMP pcrel (BP)

307 Target : <0x0000ffac> { _finish_task_switch + 0x60 }

     Source : <0x0000ff96> { _finish_task_switch + 0x4a } IF !CC JUMP pcrel (BP)

308 Target : <0x0000ff4c> { _finish_task_switch + 0x0 }

     Source : <0x001a520c> { _schedule + 0x288 } JUMP.L

309 Target : <0x001a5202> { _schedule + 0x27e }

     Source : <0x0000a50a> { _new_old_task + 0x6 } RTS

310 Target : <0x0000a504> { _new_old_task + 0x0 }

     Source : <0x0000a502> { _resume + 0x2e } JUMP (P0)

311 Target : <0x0000a4d4> { _resume + 0x0 }

     Source : <0x001a51fe> { _schedule + 0x27a } CALL pcrel

312 Target : <0x001a51fa> { _schedule + 0x276 }

     Source : <0x000f1b5e> { _memcpy + 0x2e } RTS

313 Target : <0x000f1b44> { _memcpy + 0x14 }

     Source : <0x000f1b3c> { _memcpy + 0xc } IF !CC JUMP pcrel

314 Target : <0x000f1b30> { _memcpy + 0x0 }

     Source : <0x001a51f6> { _schedule + 0x272 } JUMP.L

315 Target : <0x001a51ea> { _schedule + 0x266 }

     Source : <0x000f1b5e> { _memcpy + 0x2e } RTS

316 Target : <0x000f1b30> { _memcpy + 0x0 }

     Source : <0x001a51e6> { _schedule + 0x262 } JUMP.L

317 Target : <0x001a51c2> { _schedule + 0x23e }

     Source : <0x001a51b4> { _schedule + 0x230 } IF CC JUMP pcrel (BP)

318 Target : <0x001a5190> { _schedule + 0x20c }

     Source : <0x001a514a> { _schedule + 0x1c6 } IF CC JUMP pcrel (BP)

319 Target : <0x001a510c> { _schedule + 0x188 }

     Source : <0x0000b7ac> { _pick_next_task_idle + 0x3c } RTS

320 Target : <0x0000b7a4> { _pick_next_task_idle + 0x34 }

     Source : <0x0000b784> { _pick_next_task_idle + 0x14 } IF CC JUMP pcrel

321 Target : <0x0000b770> { _pick_next_task_idle + 0x0 }

     Source : <0x001a510a> { _schedule + 0x186 } CALL (P2)

322 Target : <0x001a50fc> { _schedule + 0x178 }

     Source : <0x001a5110> { _schedule + 0x18c } IF CC JUMP pcrel (BP)

323 Target : <0x001a510c> { _schedule + 0x188 }

     Source : <0x0000d61e> { _pick_next_task_fair + 0x82 } RTS

324 Target : <0x0000d618> { _pick_next_task_fair + 0x7c }

     Source : <0x0000d5a8> { _pick_next_task_fair + 0xc } IF CC JUMP pcrel

325 Target : <0x0000d59c> { _pick_next_task_fair + 0x0 }

     Source : <0x001a510a> { _schedule + 0x186 } CALL (P2)

326 Target : <0x001a50fc> { _schedule + 0x178 }

     Source : <0x001a5110> { _schedule + 0x18c } IF CC JUMP pcrel (BP)

327 Target : <0x001a510c> { _schedule + 0x188 }

     Source : <0x0000bdae> { _pick_next_task_rt + 0x1a } RTS

328 Target : <0x0000bd94> { _pick_next_task_rt + 0x0 }

     Source : <0x001a510a> { _schedule + 0x186 } CALL (P2)

329 Target : <0x001a5100> { _schedule + 0x17c }

     Source : <0x001a50fa> { _schedule + 0x176 } JUMP.S

330 Target : <0x001a50f2> { _schedule + 0x16e }

     Source : <0x001a5268> { _schedule + 0x2e4 } JUMP.S

331 Target : <0x001a5262> { _schedule + 0x2de }

     Source : <0x0000d61e> { _pick_next_task_fair + 0x82 } RTS

332 Target : <0x0000d618> { _pick_next_task_fair + 0x7c }

     Source : <0x0000d5a8> { _pick_next_task_fair + 0xc } IF CC JUMP pcrel

333 Target : <0x0000d59c> { _pick_next_task_fair + 0x0 }

     Source : <0x001a525e> { _schedule + 0x2da } CALL pcrel

334 Target : <0x001a5256> { _schedule + 0x2d2 }

     Source : <0x001a50f0> { _schedule + 0x16c } IF CC JUMP pcrel

335 Target : <0x001a50e2> { _schedule + 0x15e }

     Source : <0x0000f336> { _put_prev_task_rt + 0x1e } RTS

336 Target : <0x0000f324> { _put_prev_task_rt + 0xc }

     Source : <0x0000f074> { _update_curr_rt + 0x1c } RTS

337 Target : <0x0000f06e> { _update_curr_rt + 0x16 }

     Source : <0x0000f190> { _update_curr_rt + 0x138 } IF CC JUMP pcrel (BP)

338 Target : <0x0000f17e> { _update_curr_rt + 0x126 }

     Source : <0x0000f1fa> { _update_curr_rt + 0x1a2 } IF CC JUMP pcrel (BP)

339 Target : <0x0000f1f2> { _update_curr_rt + 0x19a }

     Source : <0x0000f170> { _update_curr_rt + 0x118 } IF CC JUMP pcrel (BP)

340 Target : <0x0000f16e> { _update_curr_rt + 0x116 }

     Source : <0x0000f1b6> { _update_curr_rt + 0x15e } JUMP.S

341 Target : <0x0000f1ac> { _update_curr_rt + 0x154 }

     Source : <0x0000f16c> { _update_curr_rt + 0x114 } IF CC JUMP pcrel (BP)

342 Target : <0x0000f15c> { _update_curr_rt + 0x104 }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

343 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x0000f158> { _update_curr_rt + 0x100 } CALL pcrel

344 Target : <0x0000f076> { _update_curr_rt + 0x1e }

     Source : <0x0000f06c> { _update_curr_rt + 0x14 } IF CC JUMP pcrel

345 Target : <0x0000f058> { _update_curr_rt + 0x0 }

     Source : <0x0000f320> { _put_prev_task_rt + 0x8 } JUMP.L

346 Target : <0x0000f318> { _put_prev_task_rt + 0x0 }

     Source : <0x001a50e0> { _schedule + 0x15c } CALL (P2)

347 Target : <0x001a50d2> { _schedule + 0x14e }

     Source : <0x001a5072> { _schedule + 0xee } IF !CC JUMP pcrel (BP)

348 Target : <0x001a5066> { _schedule + 0xe2 }

     Source : <0x0000b758> { _deactivate_task + 0x40 } RTS

349 Target : <0x0000b74c> { _deactivate_task + 0x34 }

     Source : <0x0000b664> { _dequeue_task + 0x78 } RTS

350 Target : <0x0000b658> { _dequeue_task + 0x6c }

     Source : <0x0000bbb6> { _dequeue_rt_stack + 0xae } RTS

351 Target : <0x0000bbb0> { _dequeue_rt_stack + 0xa8 }

     Source : <0x0000bb54> { _dequeue_rt_stack + 0x4c } IF CC JUMP pcrel

352 Target : <0x0000bb4a> { _dequeue_rt_stack + 0x42 }

     Source : <0x0000bb46> { _dequeue_rt_stack + 0x3e } IF !CC JUMP pcrel (BP)

353 Target : <0x0000bb40> { _dequeue_rt_stack + 0x38 }

     Source : <0x0000bb3c> { _dequeue_rt_stack + 0x34 } IF CC JUMP pcrel (BP)

354 Target : <0x0000bb36> { _dequeue_rt_stack + 0x2e }

     Source : <0x0000bbae> { _dequeue_rt_stack + 0xa6 } JUMP.S

355 Target : <0x0000bb5c> { _dequeue_rt_stack + 0x54 }

     Source : <0x0000bb34> { _dequeue_rt_stack + 0x2c } JUMP.S

356 Target : <0x0000bb08> { _dequeue_rt_stack + 0x0 }

     Source : <0x0000f350> { _dequeue_task_rt + 0x18 } CALL pcrel

357 Target : <0x0000f344> { _dequeue_task_rt + 0xc }

     Source : <0x0000f074> { _update_curr_rt + 0x1c } RTS

358 Target : <0x0000f06e> { _update_curr_rt + 0x16 }

     Source : <0x0000f190> { _update_curr_rt + 0x138 } IF CC JUMP pcrel (BP)

359 Target : <0x0000f17e> { _update_curr_rt + 0x126 }

     Source : <0x0000f1fa> { _update_curr_rt + 0x1a2 } IF CC JUMP pcrel (BP)

360 Target : <0x0000f1f2> { _update_curr_rt + 0x19a }

     Source : <0x0000f170> { _update_curr_rt + 0x118 } IF CC JUMP pcrel (BP)

361 Target : <0x0000f16e> { _update_curr_rt + 0x116 }

     Source : <0x0000f1b6> { _update_curr_rt + 0x15e } JUMP.S

362 Target : <0x0000f1ac> { _update_curr_rt + 0x154 }

     Source : <0x0000f16c> { _update_curr_rt + 0x114 } IF CC JUMP pcrel (BP)

363 Target : <0x0000f15c> { _update_curr_rt + 0x104 }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

364 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x0000f158> { _update_curr_rt + 0x100 } CALL pcrel

365 Target : <0x0000f076> { _update_curr_rt + 0x1e }

     Source : <0x0000f06c> { _update_curr_rt + 0x14 } IF CC JUMP pcrel

366 Target : <0x0000f058> { _update_curr_rt + 0x0 }

     Source : <0x0000f340> { _dequeue_task_rt + 0x8 } JUMP.L

367 Target : <0x0000f338> { _dequeue_task_rt + 0x0 }

     Source : <0x0000b656> { _dequeue_task + 0x6a } CALL (P2)

368 Target : <0x0000b5ec> { _dequeue_task + 0x0 }

     Source : <0x0000b748> { _deactivate_task + 0x30 } CALL pcrel

369 Target : <0x0000b744> { _deactivate_task + 0x2c }

     Source : <0x0000b726> { _deactivate_task + 0xe } IF CC JUMP pcrel

370 Target : <0x0000b718> { _deactivate_task + 0x0 }

     Source : <0x001a5062> { _schedule + 0xde } CALL pcrel

371 Target : <0x001a502c> { _schedule + 0xa8 }

     Source : <0x001a501e> { _schedule + 0x9a } IF CC JUMP pcrel (BP)

372 Target : <0x001a4ffe> { _schedule + 0x7a }

     Source : <0x00006554> { _sched_clock + 0x58 } RTS

373 Target : <0x00006520> { _sched_clock + 0x24 }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

374 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x0000651c> { _sched_clock + 0x20 } CALL pcrel

375 Target : <0x000064fc> { _sched_clock + 0x0 }

     Source : <0x0002d71e> { _sched_clock_cpu + 0x16 } JUMP (P2)

376 Target : <0x0002d708> { _sched_clock_cpu + 0x0 }

     Source : <0x001a4ffa> { _schedule + 0x76 } CALL pcrel

377 Target : <0x001a4fe8> { _schedule + 0x64 }

     Source : <0x001a4fd8> { _schedule + 0x54 } IF CC JUMP pcrel

378 Target : <0x001a4fb0> { _schedule + 0x2c }

     Source : <0x0003d274> { _rcu_sched_qs + 0x14 } RTS

379 Target : <0x0003d260> { _rcu_sched_qs + 0x0 }

     Source : <0x001a4fac> { _schedule + 0x28 } CALL pcrel

380 Target : <0x001a4f84> { _schedule + 0x0 }

     Source : <0x02af40fe> { :detradrv:_kThreadItB + 0xa6 } CALL (P7)

381 Target : <0x02af40ee> { :detradrv:_kThreadItB + 0x96 }

     Source : <0x02af410e> { :detradrv:_kThreadItB + 0xb6 } IF CC JUMP pcrel (BP)

382 Target : <0x02af4108> { :detradrv:_kThreadItB + 0xb0 }

     Source : <0x00028660> { _prepare_to_wait + 0x58 } RTS

383 Target : <0x0002862c> { _prepare_to_wait + 0x24 }

     Source : <0x00028670> { _prepare_to_wait + 0x68 } JUMP.S

384 Target : <0x00028666> { _prepare_to_wait + 0x5e }

     Source : <0x0002862a> { _prepare_to_wait + 0x22 } IF CC JUMP pcrel

385 Target : <0x00028608> { _prepare_to_wait + 0x0 }

     Source : <0x02af4106> { :detradrv:_kThreadItB + 0xae } CALL (P5)

386 Target : <0x02af4100> { :detradrv:_kThreadItB + 0xa8 }

     Source : <0x02af40ec> { :detradrv:_kThreadItB + 0x94 } JUMP.S

387 Target : <0x02af40bc> { :detradrv:_kThreadItB + 0x64 }

     Source : <0x02af412c> { :detradrv:_kThreadItB + 0xd4 } JUMP.S

388 Target : <0x02af411e> { :detradrv:_kThreadItB + 0xc6 }

     Source : <0x0002857e> { _finish_wait + 0x52 } RTS

389 Target : <0x0002856a> { _finish_wait + 0x3e }

     Source : <0x0002858c> { _finish_wait + 0x60 } JUMP.S

390 Target : <0x00028580> { _finish_wait + 0x54 }

     Source : <0x00028568> { _finish_wait + 0x3c } IF !CC JUMP pcrel (BP)

391 Target : <0x0002852c> { _finish_wait + 0x0 }

     Source : <0x02af411c> { :detradrv:_kThreadItB + 0xc4 } CALL (P2)

392 Target : <0x02af4108> { :detradrv:_kThreadItB + 0xb0 }

     Source : <0x00028660> { _prepare_to_wait + 0x58 } RTS

393 Target : <0x0002862c> { _prepare_to_wait + 0x24 }

     Source : <0x00028670> { _prepare_to_wait + 0x68 } JUMP.S

394 Target : <0x00028666> { _prepare_to_wait + 0x5e }

     Source : <0x0002862a> { _prepare_to_wait + 0x22 } IF CC JUMP pcrel

395 Target : <0x00028608> { _prepare_to_wait + 0x0 }

     Source : <0x02af4106> { :detradrv:_kThreadItB + 0xae } CALL (P5)

396 Target : <0x02af4100> { :detradrv:_kThreadItB + 0xa8 }

     Source : <0x001a5242> { _schedule + 0x2be } RTS

397 Target : <0x001a5228> { _schedule + 0x2a4 }

     Source : <0x001a521e> { _schedule + 0x29a } IF CC JUMP pcrel

398 Target : <0x001a5210> { _schedule + 0x28c }

     Source : <0x0000ffaa> { _finish_task_switch + 0x5e } RTS

399 Target : <0x0000ff9c> { _finish_task_switch + 0x50 }

     Source : <0x0000ffb2> { _finish_task_switch + 0x66 } IF !CC JUMP pcrel (BP)

400 Target : <0x0000ffac> { _finish_task_switch + 0x60 }

     Source : <0x0000ff96> { _finish_task_switch + 0x4a } IF !CC JUMP pcrel (BP)

401 Target : <0x0000ff4c> { _finish_task_switch + 0x0 }

     Source : <0x001a520c> { _schedule + 0x288 } JUMP.L

402 Target : <0x001a5202> { _schedule + 0x27e }

     Source : <0x0000a50a> { _new_old_task + 0x6 } RTS

403 Target : <0x0000a504> { _new_old_task + 0x0 }

     Source : <0x0000a502> { _resume + 0x2e } JUMP (P0)

404 Target : <0x0000a4d4> { _resume + 0x0 }

     Source : <0x001a51fe> { _schedule + 0x27a } CALL pcrel

405 Target : <0x001a51fa> { _schedule + 0x276 }

     Source : <0x000f1b5e> { _memcpy + 0x2e } RTS

406 Target : <0x000f1b44> { _memcpy + 0x14 }

     Source : <0x000f1b3c> { _memcpy + 0xc } IF !CC JUMP pcrel

407 Target : <0x000f1b30> { _memcpy + 0x0 }

     Source : <0x001a51f6> { _schedule + 0x272 } JUMP.L

408 Target : <0x001a51ea> { _schedule + 0x266 }

     Source : <0x000f1b5e> { _memcpy + 0x2e } RTS

409 Target : <0x000f1b30> { _memcpy + 0x0 }

     Source : <0x001a51e6> { _schedule + 0x262 } JUMP.L

410 Target : <0x001a51c2> { _schedule + 0x23e }

     Source : <0x001a51b4> { _schedule + 0x230 } IF CC JUMP pcrel (BP)

411 Target : <0x001a5190> { _schedule + 0x20c }

     Source : <0x001a514a> { _schedule + 0x1c6 } IF CC JUMP pcrel (BP)

412 Target : <0x001a510c> { _schedule + 0x188 }

     Source : <0x0000bdae> { _pick_next_task_rt + 0x1a } RTS

413 Target : <0x0000bda6> { _pick_next_task_rt + 0x12 }

     Source : <0x0000bde2> { _pick_next_task_rt + 0x4e } JUMP.S

414 Target : <0x0000bdc4> { _pick_next_task_rt + 0x30 }

     Source : <0x0000bd3a> { _pick_next_rt_entity + 0xf2 } RTS

415 Target : <0x0000bd1e> { _pick_next_rt_entity + 0xd6 }

     Source : <0x0000bd18> { _pick_next_rt_entity + 0xd0 } IF !CC JUMP pcrel (BP)

416 Target : <0x0000bd12> { _pick_next_rt_entity + 0xca }

     Source : <0x0000bd0c> { _pick_next_rt_entity + 0xc4 } IF !CC JUMP pcrel (BP)

417 Target : <0x0000bcea> { _pick_next_rt_entity + 0xa2 }

     Source : <0x0000bc9c> { _pick_next_rt_entity + 0x54 } IF CC JUMP pcrel (BP)

418 Target : <0x0000bc96> { _pick_next_rt_entity + 0x4e }

     Source : <0x0000bc52> { _pick_next_rt_entity + 0xa } IF CC JUMP pcrel (BP)

419 Target : <0x0000bc48> { _pick_next_rt_entity + 0x0 }

     Source : <0x0000bdc0> { _pick_next_task_rt + 0x2c } CALL pcrel

420 Target : <0x0000bdb0> { _pick_next_task_rt + 0x1c }

     Source : <0x0000bda2> { _pick_next_task_rt + 0xe } IF !CC JUMP pcrel

421 Target : <0x0000bd94> { _pick_next_task_rt + 0x0 }

     Source : <0x001a510a> { _schedule + 0x186 } CALL (P2)

422 Target : <0x001a5100> { _schedule + 0x17c }

     Source : <0x001a50fa> { _schedule + 0x176 } JUMP.S

423 Target : <0x001a50e2> { _schedule + 0x15e }

     Source : <0x0000b7cc> { _put_prev_task_idle + 0x8 } RTS

424 Target : <0x0000b7c4> { _put_prev_task_idle + 0x0 }

     Source : <0x001a50e0> { _schedule + 0x15c } CALL (P2)

425 Target : <0x001a506c> { _schedule + 0xe8 }

     Source : <0x001a5032> { _schedule + 0xae } IF CC JUMP pcrel (BP)

426 Target : <0x001a502c> { _schedule + 0xa8 }

     Source : <0x001a501e> { _schedule + 0x9a } IF CC JUMP pcrel (BP)

427 Target : <0x001a4ffe> { _schedule + 0x7a }

     Source : <0x00006554> { _sched_clock + 0x58 } RTS

428 Target : <0x00006520> { _sched_clock + 0x24 }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

429 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x0000651c> { _sched_clock + 0x20 } CALL pcrel

430 Target : <0x000064fc> { _sched_clock + 0x0 }

     Source : <0x0002d71e> { _sched_clock_cpu + 0x16 } JUMP (P2)

431 Target : <0x0002d708> { _sched_clock_cpu + 0x0 }

     Source : <0x001a4ffa> { _schedule + 0x76 } CALL pcrel

432 Target : <0x001a4fe8> { _schedule + 0x64 }

     Source : <0x001a4fd8> { _schedule + 0x54 } IF CC JUMP pcrel

433 Target : <0x001a4fb0> { _schedule + 0x2c }

     Source : <0x0003d274> { _rcu_sched_qs + 0x14 } RTS

434 Target : <0x0003d260> { _rcu_sched_qs + 0x0 }

     Source : <0x001a4fac> { _schedule + 0x28 } CALL pcrel

435 Target : <0x001a4f84> { _schedule + 0x0 }

     Source : <0xffa0008e> { _cpu_idle + 0x4e } CALL pcrel

436 Target : <0xffa00088> { _cpu_idle + 0x48 }

     Source : <0x00034a22> { _tick_nohz_restart_sched_tick + 0xe6 } RTS

437 Target : <0x00034a18> { _tick_nohz_restart_sched_tick + 0xdc }

     Source : <0x0003493a> { _tick_nohz_restart + 0xb6 } RTS

438 Target : <0x00034932> { _tick_nohz_restart + 0xae }

     Source : <0x000348fa> { _tick_nohz_restart + 0x76 } IF !CC JUMP pcrel

439 Target : <0x000348f6> { _tick_nohz_restart + 0x72 }

     Source : <0x0002bed4> { _hrtimer_start_range_ns + 0x18 } RTS

440 Target : <0x0002bed0> { _hrtimer_start_range_ns + 0x14 }

     Source : <0x0002bd26> { ___hrtimer_start_range_ns + 0xae } RTS

441 Target : <0x0002bd1e> { ___hrtimer_start_range_ns + 0xa6 }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

442 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x0002bd1a> { ___hrtimer_start_range_ns + 0xa2 } CALL pcrel

443 Target : <0x0002bd06> { ___hrtimer_start_range_ns + 0x8e }

     Source : <0x0002bcf8> { ___hrtimer_start_range_ns + 0x80 } IF CC JUMP pcrel (BP)

444 Target : <0x0002bcf2> { ___hrtimer_start_range_ns + 0x7a }

     Source : <0x0002bce2> { ___hrtimer_start_range_ns + 0x6a } IF CC JUMP pcrel (BP)

445 Target : <0x0002bce0> { ___hrtimer_start_range_ns + 0x68 }

     Source : <0x0002b534> { _enqueue_hrtimer + 0xa8 } RTS

446 Target : <0x0002b526> { _enqueue_hrtimer + 0x9a }

     Source : <0x000ee5aa> { _rb_insert_color + 0x66 } RTS

447 Target : <0x000ee598> { _rb_insert_color + 0x54 }

     Source : <0x000ee564> { _rb_insert_color + 0x20 } IF !CC JUMP pcrel

448 Target : <0x000ee544> { _rb_insert_color + 0x0 }

     Source : <0x0002b522> { _enqueue_hrtimer + 0x96 } JUMP.L

449 Target : <0x0002b514> { _enqueue_hrtimer + 0x88 }

     Source : <0x0002b510> { _enqueue_hrtimer + 0x84 } IF CC JUMP pcrel

450 Target : <0x0002b500> { _enqueue_hrtimer + 0x74 }

     Source : <0x0002b53c> { _enqueue_hrtimer + 0xb0 } IF CC JUMP pcrel (BP)

451 Target : <0x0002b536> { _enqueue_hrtimer + 0xaa }

     Source : <0x0002b4fe> { _enqueue_hrtimer + 0x72 } IF CC JUMP pcrel

452 Target : <0x0002b4f2> { _enqueue_hrtimer + 0x66 }

     Source : <0x0002b50c> { _enqueue_hrtimer + 0x80 } IF !CC JUMP pcrel (BP)

453 Target : <0x0002b508> { _enqueue_hrtimer + 0x7c }

     Source : <0x0002b544> { _enqueue_hrtimer + 0xb8 } JUMP.S

454 Target : <0x0002b53e> { _enqueue_hrtimer + 0xb2 }

     Source : <0x0002b4fa> { _enqueue_hrtimer + 0x6e } IF !CC JUMP pcrel (BP)

455 Target : <0x0002b4de> { _enqueue_hrtimer + 0x52 }

     Source : <0x0002b4a2> { _enqueue_hrtimer + 0x16 } IF CC JUMP pcrel (BP)

456 Target : <0x0002b48c> { _enqueue_hrtimer + 0x0 }

     Source : <0x0002bcdc> { ___hrtimer_start_range_ns + 0x64 } CALL pcrel

457 Target : <0x0002bcd4> { ___hrtimer_start_range_ns + 0x5c }

     Source : <0x0002aff4> { _ktime_add_safe + 0x54 } RTS

458 Target : <0x0002aff2> { _ktime_add_safe + 0x52 }

     Source : <0x0002b000> { _ktime_add_safe + 0x60 } IF !CC JUMP pcrel (BP)

459 Target : <0x0002affa> { _ktime_add_safe + 0x5a }

     Source : <0x0002b00c> { _ktime_add_safe + 0x6c } JUMP.S

460 Target : <0x0002b008> { _ktime_add_safe + 0x68 }

     Source : <0x0002aff8> { _ktime_add_safe + 0x58 } IF CC JUMP pcrel

461 Target : <0x0002aff6> { _ktime_add_safe + 0x56 }

     Source : <0x0002afe8> { _ktime_add_safe + 0x48 } IF CC JUMP pcrel (BP)

462 Target : <0x0002afde> { _ktime_add_safe + 0x3e }

     Source : <0x0002afca> { _ktime_add_safe + 0x2a } IF CC JUMP pcrel (BP)

463 Target : <0x0002afa0> { _ktime_add_safe + 0x0 }

     Source : <0x0002bcd0> { ___hrtimer_start_range_ns + 0x58 } CALL pcrel

464 Target : <0x0002bcc4> { ___hrtimer_start_range_ns + 0x4c }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

465 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

466 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

467 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x0002bcc0> { ___hrtimer_start_range_ns + 0x48 } CALL pcrel

468 Target : <0x0002bc78> { ___hrtimer_start_range_ns + 0x0 }

     Source : <0x0002becc> { _hrtimer_start_range_ns + 0x10 } JUMP.L

469 Target : <0x0002bebc> { _hrtimer_start_range_ns + 0x0 }

     Source : <0x000348f2> { _tick_nohz_restart + 0x6e } JUMP.L

470 Target : <0x000348e2> { _tick_nohz_restart + 0x5e }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

471 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x000348de> { _tick_nohz_restart + 0x5a } CALL pcrel

472 Target : <0x000348ac> { _tick_nohz_restart + 0x28 }

     Source : <0x00034922> { _tick_nohz_restart + 0x9e } IF CC JUMP pcrel (BP)

473 Target : <0x0003491e> { _tick_nohz_restart + 0x9a }

     Source : <0x0002c4a2> { _hrtimer_forward + 0x15a } RTS

474 Target : <0x0002c492> { _hrtimer_forward + 0x14a }

     Source : <0x0002c376> { _hrtimer_forward + 0x2e } IF CC JUMP pcrel

475 Target : <0x0002c348> { _hrtimer_forward + 0x0 }

     Source : <0x0003491a> { _tick_nohz_restart + 0x96 } CALL pcrel

476 Target : <0x0003490c> { _tick_nohz_restart + 0x88 }

     Source : <0x000348aa> { _tick_nohz_restart + 0x26 } JUMP.S

477 Target : <0x00034894> { _tick_nohz_restart + 0x10 }

     Source : <0x0002b48a> { _hrtimer_cancel + 0x1a } RTS

478 Target : <0x0002b480> { _hrtimer_cancel + 0x10 }

     Source : <0x0002b400> { _hrtimer_try_to_cancel + 0x58 } RTS

479 Target : <0x0002b3f8> { _hrtimer_try_to_cancel + 0x50 }

     Source : <0x001a54c4> { _preempt_schedule + 0x1c } RTS

480 Target : <0x001a54a8> { _preempt_schedule + 0x0 }

     Source : <0x0002b3f4> { _hrtimer_try_to_cancel + 0x4c } JUMP.L

481 Target : <0x0002b3e0> { _hrtimer_try_to_cancel + 0x38 }

     Source : <0x0002b3d2> { _hrtimer_try_to_cancel + 0x2a } IF CC JUMP pcrel (BP)

482 Target : <0x0002b3cc> { _hrtimer_try_to_cancel + 0x24 }

     Source : <0x0002b464> { _hrtimer_try_to_cancel + 0xbc } JUMP.S

483 Target : <0x0002b462> { _hrtimer_try_to_cancel + 0xba }

     Source : <0x0002b340> { ___remove_hrtimer + 0x30 } RTS

484 Target : <0x0002b338> { ___remove_hrtimer + 0x28 }

     Source : <0x000ee816> { _rb_erase + 0x82 } RTS

485 Target : <0x000ee810> { _rb_erase + 0x7c }

     Source : <0x000ee876> { _rb_erase + 0xe2 } JUMP.S

486 Target : <0x000ee862> { _rb_erase + 0xce }

     Source : <0x000ee852> { _rb_erase + 0xbe } IF CC JUMP pcrel

487 Target : <0x000ee842> { _rb_erase + 0xae }

     Source : <0x000ee79e> { _rb_erase + 0xa } IF CC JUMP pcrel

488 Target : <0x000ee794> { _rb_erase + 0x0 }

     Source : <0x0002b334> { ___remove_hrtimer + 0x24 } JUMP.L

489 Target : <0x0002b310> { ___remove_hrtimer + 0x0 }

     Source : <0x0002b45e> { _hrtimer_try_to_cancel + 0xb6 } CALL pcrel

490 Target : <0x0002b448> { _hrtimer_try_to_cancel + 0xa0 }

     Source : <0x0002b412> { _hrtimer_try_to_cancel + 0x6a } IF CC JUMP pcrel (BP)

491 Target : <0x0002b402> { _hrtimer_try_to_cancel + 0x5a }

     Source : <0x0002b3c8> { _hrtimer_try_to_cancel + 0x20 } IF CC JUMP pcrel (BP)

492 Target : <0x0002b3a8> { _hrtimer_try_to_cancel + 0x0 }

     Source : <0x0002b47c> { _hrtimer_cancel + 0xc } CALL pcrel

493 Target : <0x0002b47a> { _hrtimer_cancel + 0xa }

     Source : <0x0002b478> { _hrtimer_cancel + 0x8 } JUMP.S

494 Target : <0x0002b470> { _hrtimer_cancel + 0x0 }

     Source : <0x00034890> { _tick_nohz_restart + 0xc } CALL pcrel

495 Target : <0x00034884> { _tick_nohz_restart + 0x0 }

     Source : <0x00034a14> { _tick_nohz_restart_sched_tick + 0xd8 } CALL pcrel

496 Target : <0x000349be> { _tick_nohz_restart_sched_tick + 0x82 }

     Source : <0x000343ce> { _tick_do_update_jiffies64 + 0x96 } RTS

497 Target : <0x000343c6> { _tick_do_update_jiffies64 + 0x8e }

     Source : <0x00034496> { _tick_do_update_jiffies64 + 0x15e } IF !CC JUMP pcrel (BP)

498 Target : <0x00034492> { _tick_do_update_jiffies64 + 0x15a }

     Source : <0x00034372> { _tick_do_update_jiffies64 + 0x3a } IF CC JUMP pcrel

499 Target : <0x00034338> { _tick_do_update_jiffies64 + 0x0 }

     Source : <0x000349ba> { _tick_nohz_restart_sched_tick + 0x7e } JUMP.L

500 Target : <0x000349b6> { _tick_nohz_restart_sched_tick + 0x7a }

     Source : <0x0003d376> { _rcu_exit_nohz + 0x2e } RTS

501 Target : <0x0003d376> { _rcu_exit_nohz + 0x2e }

     Source : <0x0003d368> { _rcu_exit_nohz + 0x20 } IF CC JUMP pcrel (BP)

502 Target : <0x0003d348> { _rcu_exit_nohz + 0x0 }

     Source : <0x000349b2> { _tick_nohz_restart_sched_tick + 0x76 } JUMP.L

503 Target : <0x0003499a> { _tick_nohz_restart_sched_tick + 0x5e }

     Source : <0x0003498e> { _tick_nohz_restart_sched_tick + 0x52 } IF CC JUMP pcrel

504 Target : <0x0003497c> { _tick_nohz_restart_sched_tick + 0x40 }

     Source : <0x0003088c> { _ktime_get + 0xe4 } RTS

505 Target : <0x00030884> { _ktime_get + 0xdc }

     Source : <0x0002bc60> { _ktime_add_ns + 0xa4 } RTS

506 Target : <0x0002bc58> { _ktime_add_ns + 0x9c }

     Source : <0x0002bc46> { _ktime_add_ns + 0x8a } IF CC JUMP pcrel

507 Target : <0x0002bc22> { _ktime_add_ns + 0x66 }

     Source : <0x0002bbd2> { _ktime_add_ns + 0x16 } IF CC JUMP pcrel (BP)

508 Target : <0x0002bbbc> { _ktime_add_ns + 0x0 }

     Source : <0x00030880> { _ktime_get + 0xd8 } CALL pcrel

509 Target : <0x00030836> { _ktime_get + 0x8e }

     Source : <0x000f1cec> { ___muldi3 + 0x48 } RTS

510 Target : <0x000f1ca4> { ___muldi3 + 0x0 }

     Source : <0x00030832> { _ktime_get + 0x8a } JUMP.L

511 Target : <0x00030808> { _ktime_get + 0x60 }

     Source : <0x000064f8> { _bfin_read_cycles + 0x4 } RTS

512 Target : <0x000064f4> { _bfin_read_cycles + 0x0 }

     Source : <0x00030806> { _ktime_get + 0x5e } CALL (P2)

513 Target : <0x000307de> { _ktime_get + 0x36 }

     Source : <0x000307d2> { _ktime_get + 0x2a } IF CC JUMP pcrel (BP)

514 Target : <0x000307a8> { _ktime_get + 0x0 }

     Source : <0x00034978> { _tick_nohz_restart_sched_tick + 0x3c } CALL pcrel

515 Target : <0x00034972> { _tick_nohz_restart_sched_tick + 0x36 }

     Source : <0x00034958> { _tick_nohz_restart_sched_tick + 0x1c } IF !CC JUMP pcrel (BP)

516 Target : <0x0003493c> { _tick_nohz_restart_sched_tick + 0x0 }

     Source : <0xffa00084> { _cpu_idle + 0x44 } JUMP.L

517 Target : <0xffa0007e> { _cpu_idle + 0x3e }

     Source : <0xffa00030> { _default_idle + 0x30 } RTS

QuoteReplyEditDelete

Attachments

    Outcomes