OSDN Git Service

add cortex-a9 base
[hos/hos-v4a.git] / kernel / source / arch / proc / arm / arm_v7a / gcc / kcre_ctx.S
1 /** 
2  *  Hyper Operating System V4 Advance
3  *
4  * Copyright (C) 1998-2014 by Project HOS
5  * http://sourceforge.jp/projects/hos/
6  */
7
8
9 #include "arm_v7a.inc"
10
11
12                                 .code   16
13                                 .text
14                                 .align  2
15
16 /************************************************
17   実行コンテキストの作成
18   void _kernel_cre_ctx(
19                         _KERNEL_T_CTXCB *pk_ctxcb,      r0   :作成するコンテキスト
20                         VP             isp,                     r1   :スタックポインタ
21                         FP             entry,           r2   :実行アドレス
22                         VP_INT         par1,            r3   :実行時パラメータ
23                         VP_INT         par2)            sp[0]:実行時パラメータ
24  ************************************************/
25                                 .global _kernel_cre_ctx
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                                 adr             r2, ctx_entry                           /* エントリーアドレス設定 */
33                                 add             r2, #1                                          /* Thumbモードアドレスとして設定 */
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                                 .end
47
48
49 /* end of file */