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