OSDN Git Service

add cortex-m0
[hos/hos-v4a.git] / kernel / source / arch / proc / arm / arm_v7m / gcc / kcre_ctx.S
1 /**
2  *  Hyper Operating System V4 Advance
3  *
4  * Copyright (C) 1998-2011 by Project HOS
5  * http://sourceforge.jp/projects/hos/
6  */
7
8
9                                 .syntax unified
10
11                                 .text
12                                 .align  2
13
14
15 /************************************************
16   実行コンテキストの作成
17   void _kernel_cre_ctx(
18                         _KERNEL_T_CTXCB *pk_ctxcb,      r0   :作成するコンテキスト
19                         VP             isp,                     r1   :スタックポインタ
20                         FP             entry,           r2   :実行アドレス
21                         VP_INT         par1,            r3   :実行時パラメータ
22                         VP_INT         par2)            sp[0]:実行時パラメータ
23  ************************************************/
24                                 .global _kernel_cre_ctx
25                                 .thumb
26                                 .thumb_func
27                                 .type   _kernel_cre_ctx, %function
28 _kernel_cre_ctx:
29                                 sub             r1, #36                                         /* スタックを確保 */
30                                 str             r2, [r1, #0]                            /* r4 部分にentryを設定 */
31                                 str             r3, [r1, #4]                            /* r5 部分にpar1を設定 */
32                                 ldr             r2, [sp, #0]                            /* par2を取り出し */
33                                 str             r2, [r1, #8]                            /* r6 部分にpar2を設定 */
34                                 movw    r2, #:lower16:(ctx_entry+1)
35                                 movt    r2, #:upper16:(ctx_entry+1)
36                                 str             r2, [r1, #16]                           /* lr 部分にエントリーアドレスを設定 */
37                                 str             r1, [r0]                                        /* ctxcb に新 sp を保存 */
38                                 bx              lr                                                      /* リターン */
39
40 /************************************************
41   実行コンテキストエントリーアドレス
42  ************************************************/
43 ctx_entry:
44                                 mov             r0, r5                                          /* par1を設定 */
45                                 mov             r1, r6                                          /* par2を設定 */
46                                 bx              r4                                                      /* entry を実行 */
47
48
49                                 .size   _kernel_cre_ctx, .-_kernel_cre_ctx
50
51
52                                 .end
53
54
55 /* end of file */