0
|
1 #include <stdio.h>
|
|
2 #include "Hello.h"
|
|
3 #include "Func.h"
|
|
4
|
|
5 /* これは必須 */
|
|
6 SchedDefineDynamicTask(Hello,0);
|
|
7
|
|
8 static int
|
|
9 rel_offset()
|
|
10 {
|
|
11 unsigned int pc;
|
|
12 unsigned int label;
|
|
13 __asm__ __volatile__(
|
|
14 " brsl %0,____LLLL\n"
|
|
15 "____LLLL:"
|
|
16 " ila %1,____LLLL"
|
|
17 : "=r" (pc), "=r" (label));
|
|
18 return pc-label;
|
|
19 }
|
|
20
|
|
21
|
|
22 static int
|
|
23 run(SchedTask *smanager, void *rbuf, void *wbuf)
|
|
24 {
|
|
25 int task_id = (long)smanager->get_param(0);
|
|
26
|
|
27 unsigned int pc;
|
|
28 __asm__ __volatile__(
|
|
29 " brsl %0,____LLLL1\n"
|
|
30 "____LLLL1:"
|
|
31 : "=r" (pc));
|
|
32
|
|
33 char *fmt = "char [%0x] offset [%0x]\n";
|
|
34 int offset = rel_offset();
|
|
35
|
|
36 //smanager->fprintf(smanager->stderr_,fmt+offset, fmt, offset);
|
|
37
|
|
38 //smanager->fprintf(smanager->stderr_,"[%d] Hello, World!! Seg1 \n"+offset, task_id);
|
|
39 //smanager->fprintf(smanager->stderr_,"pc=0x%0x 0x%0lx\n"+offset,pc, (unsigned long)&runTask_Hello);
|
|
40
|
|
41 smanager->printf(fmt+offset, fmt, offset);
|
|
42
|
|
43 smanager->printf("[%d] Hello, World!! Seg1\n"+offset, task_id);
|
|
44 smanager->printf("pc=0x%0x 0x%0lx\n"+offset,pc, (unsigned long)&runTask_Hello);
|
|
45
|
|
46 return 0;
|
|
47 }
|
|
48
|