OSDN Git Service

add cortex-m3 startup
[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                                 .text
10                                 .align  2
11
12
13 /************************************************
14   実行コンテキストの作成
15   void _kernel_cre_ctx(
16                         _KERNEL_T_CTXCB *pk_ctxcb,      r0   :作成するコンテキスト
17                         VP             isp,                     r1   :スタックポインタ
18                         FP             entry,           r2   :実行アドレス
19                         VP_INT         par1,            r3   :実行時パラメータ
20                         VP_INT         par2)            sp[0]:実行時パラメータ
21  ************************************************/
22                                 .global _kernel_cre_ctx
23                                 .thumb
24                                 .thumb_func
25                                 .type   _kernel_cre_ctx, %function
26 _kernel_cre_ctx:
27                                 sub             r1, #36                                         /* スタックを確保 */
28                                 str             r2, [r1, #0]                            /* r4 部分にentryを設定 */
29                                 str             r3, [r1, #4]                            /* r5 部分にpar1を設定 */
30                                 ldr             r2, [sp, #0]                            /* par2を取り出し */
31                                 str             r2, [r1, #8]                            /* r6 部分にpar2を設定 */
32                                 movw    r2, #:lower16:ctx_entry
33                                 movt    r2, #:upper16:ctx_entry
34                                 str             r2, [r1, #32]                           /* lr 部分にエントリーアドレスを設定 */
35                                 str             r1, [r0]                                        /* ctxcb に新 sp を保存 */
36                                 bx              lr                                                      /* リターン */
37
38 /************************************************
39   実行コンテキストエントリーアドレス
40  ************************************************/
41 ctx_entry:
42                                 mov             r0, r5                                          /* par1を設定 */
43                                 mov             r1, r6                                          /* par2を設定 */
44                                 bx              r4                                                      /* entry を実行 */
45
46
47                                 .size   _kernel_cre_ctx, .-_kernel_cre_ctx
48
49
50                                 .end
51
52
53 /* end of file */