source: test/test_tex1.c

このファイルの最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 13.8 KB
Rev 
[7]1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2006-2013 by Embedded and Real-Time Systems Laboratory
6 *              Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
9 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
10 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
11 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
12 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
13 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
14 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
15 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
16 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
17 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
18 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
19 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
20 *      €È¡¥
21 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
22 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
23 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
24 *        Êó¹ð€¹€ë€³€È¡¥
25 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
26 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
27 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
28 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
29 *      ÌÈÀÕ€¹€ë€³€È¡¥
30 *
31 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
32 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
33 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
34 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
35 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
36 *
37 *  $Id$
38 */
39
40/*
41 *              ¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(1)
42 *
43 * ¡Ú¥Æ¥¹¥È€ÎÌÜŪ¡Û
44 *
45 *  ¥¿¥¹¥¯€«€é¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òµ¯Æ°€¹€ëœèÍý€òÌÖÍåŪ€Ë¥Æ¥¹¥È€¹€ë¡¥
46 *
47 * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
48 *
49 *      (A) ras_tex€Î¥š¥é¡Œž¡œÐ
50 *              (A-1) ÂПݥ¿¥¹¥¯€¬µÙ»ßŸõÂÖ¡ÎNGKI1413¡Ï
51 *              (A-2) ÂПݥ¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1414¡Ï
52 *      (B) dis_tex€Î¥š¥é¡Œž¡œÐ
53 *              (B-1) Œ«¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1421¡Ï
54 *      (C) ena_tex€Î¥š¥é¡Œž¡œÐ
55 *              (C-1) Œ«¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1426¡Ï
56 *      (D) ref_tex€Î¥š¥é¡Œž¡œÐ
57 *              (D-1) ÂПݥ¿¥¹¥¯€¬µÙ»ßŸõÂÖ¡ÎNGKI1439¡Ï
58 *              (D-2) ÂПݥ¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1440¡Ï
59 *      (E) ras_tex€ÎÀµŸïœèÍý¡ÎNGKI1415¡Ï
60 *              (E-1) ÂПݥ¿¥¹¥¯€¬Œ«¥¿¥¹¥¯¡€¥¿¥¹¥¯Îã³°œèÍýµö²Ä¡€€«€Ä³ä¹þ€ßÍ¥Àè
61 *                        ÅÙ¥Þ¥¹¥¯Á޲òœüŸõÂրǡ€€¹€°€ËŒÂ¹Ô³«»Ï
62 *              (E-2) ÂПݥ¿¥¹¥¯€¬Œ«¥¿¥¹¥¯€Ç€Ê€€
63 *              (E-3) ÂПݥ¿¥¹¥¯€¬Œ«¥¿¥¹¥¯€À€¬¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
64 *              (E-4) ÂПݥ¿¥¹¥¯€¬Œ«¥¿¥¹¥¯€Ç¥¿¥¹¥¯Îã³°œèÍýµö²Ä€À€¬¡€³ä¹þ€ßÍ¥Àè
65 *                        ÅÙ¥Þ¥¹¥¯€¬Á޲òœü€Ç€Ê€€
66 *      (F) ena_tex€ÎÀµŸïœèÍý¡ÎNGKI1427¡Ï
67 *              (F-1) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€¢€ê¡€€«€Ä³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœüŸõ
68 *                        Âրǡ€€¹€°€ËŒÂ¹Ô³«»Ï
69 *              (F-2) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€Ê€€
70 *              (F-3) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€¢€ë€¬¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬Á޲òœü€Ç
71 *                        €Ê€€
72 *      (G) chg_ipm€ÎÀµŸïœèÍý
73 *              (G-1) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€¢€ê¡€€«€Ä¥¿¥¹¥¯Îã³°œèÍýµö²Ä€Ç¡€€¹€°
74 *                        €ËŒÂ¹Ô³«»Ï
75 *              (G-2) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€Ê€€
76 *              (G-3) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€¢€ë€¬¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
77 *              (G-4) ¥¿¥¹¥¯Îã³°œèÍýÍ׵ာ€¢€ë€¬¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬Á޲òœü€Ç
78 *                        €Ê€€
79 *      (H) ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Ë€è€ëµ¯Æ°
80 *              (H-1) ¥Ç¥£¥¹¥Ñ¥Ã¥Ážå€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°µö²Ä€Ç¥¿¥¹¥¯Îã³°œèÍýÍ×
81 *                        µá€¢€ê
82 *      (I) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ëµ¯Æ°¡ÊϢ³µ¯Æ°¡Ë
83 *      (J) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€ÎÌá€ê»þ€Ë€è€ëŸõÂÖÉüµ¢
84 *              (J-1) ¥¿¥¹¥¯€ËÌá€Ã€Æ€¯€ë»þ
85 *              (J-2) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬Ï¢Â³µ¯Æ°€µ€ì€ë»þ
86 *      (K) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Î¿œÅµ¯Æ°
87 *      (L) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€ÎÌá€ê»þ€Î¥¿¥¹¥¯ÀÚŽ¹€š
88 *
89 * ¡Ú»ÈÍѥ꥜¡Œ¥¹¡Û
90 *
91 *      TASK1: ¥á¥€¥ó€Î¥¿¥¹¥¯¡¥Œ«¥¿¥¹¥¯€ËÂЀ·€Æ¥¿¥¹¥¯Îã³°œèÍý€òÍ׵္€ë
92 *      TASK2: Ÿ¥¿¥¹¥¯€ËÂЀ·€Æ¥¿¥¹¥¯Îã³°œèÍý€òÍ׵္€ëÂПݥ¿¥¹¥¯
93 *      TASK3: ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¥¿¥¹¥¯
94 *      TASK4: µÙ»ßŸõÂրΥ¿¥¹¥¯
95 *
96 * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
97 *
98 *      == TASK1¡ÊÍ¥ÀèÅÙ¡§10¡Ë==
99 *      1:      state(false, false, TIPM_ENAALL, false, false, true)
100 *              ref_tex(TSK_SELF, &rtex)
101 *              assert((rtex.texstat & TTEX_DIS) != 0U)
102 *              assert(rtex.pndptn == 0U)
103 *              ras_tex(TASK3, 0x0001) -> E_OBJ         ... (A-2)
104 *              ras_tex(TASK4, 0x0001) -> E_OBJ         ... (A-1)
105 *              ref_tex(TASK3, &rtex) -> E_OBJ          ... (D-2)
106 *              ref_tex(TASK4, &rtex) -> E_OBJ          ... (D-1)
107 *      2:      ena_tex()                                                       ... (F-2)
108 *              state(false, false, TIPM_ENAALL, false, false, false)
109 *              ref_tex(TSK_SELF, &rtex)
110 *              assert((rtex.texstat & TTEX_ENA) != 0U)
111 *              assert(rtex.pndptn == 0U)
112 *      3:      ras_tex(TSK_SELF, 0x0001)                       ... (E-1)
113 *      == TASK1-TEX-1¡Ê1²óÌÜ¡Ë==
114 *      4:      assert(texptn == 0x0001)
115 *              state(false, false, TIPM_ENAALL, false, false, true)
116 *      5:      dis_dsp() ... 4€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊѲœ€µ€»€ë
117 *              chg_ipm(TMAX_INTPRI)
118 *              ena_tex()
119 *              loc_cpu()
120 *              state(false, true, TMAX_INTPRI, true, true, false)
121 *              RETURN
122 *      == TASK1¡Ê³€­¡Ë==
123 *      6:      state(false, false, TIPM_ENAALL, false, false, false)   ... (J-1)
124 *      7:      dis_dsp() ... ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
125 *              dis_tex()
126 *              state(false, false, TIPM_ENAALL, true, true, true)
127 *      8:      ras_tex(TASK1, 0x0002)                          ... (E-3)
128 *              ref_tex(TSK_SELF, &rtex)
129 *              assert((rtex.texstat & TTEX_DIS) != 0)
130 *              assert(rtex.pndptn == 0x0002)
131 *      9:      ena_tex()                                                       ... (F-1)
132 *      == TASK1-TEX-2¡Ê2²óÌÜ¡Ë==
133 *      10:     assert(texptn == 0x0002)
134 *              state(false, false, TIPM_ENAALL, true, true, true)
135 *      11:     ras_tex(TASK1, 0x0001)                          ... (E-3)
136 *              ras_tex(TASK1, 0x0002)                          ... (E-3)
137 *      12:     ena_dsp() ... 3€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊѲœ€µ€»€ë
138 *              chg_ipm(TMAX_INTPRI)
139 *              loc_cpu()
140 *              state(false, true, TMAX_INTPRI, false, true, true)
141 *              RETURN                                                          ... (I)
142 *      == TASK1-TEX-3¡Ê3²óÌÜ¡Ë==
143 *      13:     assert(texptn == 0x0003)
144 *              state(false, false, TIPM_ENAALL, true, true, true)      ... (J-2)
145 *      14:     ena_dsp() ... ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä¡€¥¿¥¹¥¯Îã³°µö²Ä
146 *              chg_ipm(TMAX_INTPRI)
147 *              ena_tex()
148 *              state(false, false, TMAX_INTPRI, false, true, false)
149 *              chg_ipm(TIPM_ENAALL)                            ... (G-2)
150 *              chg_ipm(TMAX_INTPRI)
151 *      15: ras_tex(TSK_SELF, 0x0004)                   ... (E-4)
152 *              chg_ipm(TMAX_INTPRI)                            ... (G-4)
153 *              dis_tex()
154 *              chg_ipm(TIPM_ENAALL)                            ... (G-3)
155 *              chg_ipm(TMAX_INTPRI)
156 *              ena_tex()                                                       ... (F-3)
157 *      16:     chg_ipm(TIPM_ENAALL)                            ... (G-1)(K)
158 *      == TASK1-TEX-4¡Ê4²óÌÜ¡Ë==
159 *      17:     assert(texptn == 0x0004)
160 *              state(false, false, TIPM_ENAALL, false, false, true)
161 *      18:     dis_dsp() ... 3€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊѲœ€µ€»€ë
162 *              chg_ipm(TMAX_INTPRI)
163 *              loc_cpu()
164 *              state(false, true, TMAX_INTPRI, true, true, true)
165 *              RETURN
166 *      == TASK1-TEX-3¡Ê3²óÌܳ€­¡Ë==
167 *      19:     state(false, false, TIPM_ENAALL, false, false, false)
168 *              RETURN
169 *      == TASK1¡Ê³€­¡Ë==
170 *      20:     state(false, false, TIPM_ENAALL, true, true, false)     ... (J-1)
171 *      21: ena_dsp()
172 *              rot_rdq(TPRI_SELF)
173 *      == TASK2¡ÊÍ¥ÀèÅÙ¡§10¡Ë  ==
174 *      22:     state(false, false, TIPM_ENAALL, false, false, true)
175 *      23:     ena_tex()
176 *              state(false, false, TIPM_ENAALL, false, false, false)
177 *              rot_rdq(TPRI_SELF)
178 *      == TASK3¡ÊÍ¥ÀèÅÙ¡§10¡Ë  ==
179 *      24:     state(false, false, TIPM_ENAALL, false, false, true)
180 *      25:     ena_tex() -> E_OBJ                                      ... (C-1)
181 *              state(false, false, TIPM_ENAALL, false, false, true)
182 *      26:     dis_tex() -> E_OBJ                                      ... (B-1)
183 *              state(false, false, TIPM_ENAALL, false, false, true)
184 *              ext_tsk()
185 *      == TASK1¡Ê³€­¡Ë==
186 *      27: ras_tex(TASK2, 0x0001)                              ... (E-2)
187 *              ref_tex(TASK2, &rtex)
188 *      28:     rot_rdq(TPRI_SELF)                                      ... (H-1)
189 *      == TASK2-TEX-1¡Ê1²óÌÜ¡Ë==
190 *      29:     assert(texptn == 0x0001)
191 *              state(false, false, TIPM_ENAALL, false, false, true)
192 *              RETURN
193 *      == TASK2¡Ê³€­¡Ë==
194 *      30: ras_tex(TSK_SELF, 0x0002)
195 *      == TASK2-TEX-2¡Ê2²óÌÜ¡Ë==
196 *      31:     assert(texptn == 0x0002)
197 *              state(false, false, TIPM_ENAALL, false, false, true)
198 *      32:     dis_dsp()
199 *              rot_rdq(TPRI_SELF)
200 *      33:     RETURN
201 *      == TASK1¡Ê³€­¡Ë==
202 *      34:     RETURN
203 *      == TASK2¡Ê³€­¡Ë==
204 *      35:     END
205 */
206
207#include <kernel.h>
208#include <test_lib.h>
209#include <t_syslog.h>
210#include "kernel_cfg.h"
211#include "test_tex1.h"
212
213/*
214 *  task4€Ètex_task4€ÏÀžÀ®€µ€ì€Ê€€
215 */
216
217void
218task4(intptr_t exinf)
219{
220        check_point(0);
221}
222
223void
224tex_task4(TEXPTN texptn, intptr_t exinf)
225{
226        check_point(0);
227}
228
229/* DO NOT DELETE THIS LINE -- gentest depends on it. */
230
231void
232task1(intptr_t exinf)
233{
234        ER_UINT ercd;
235        T_RTEX  rtex;
236
237        test_start(__FILE__);
238
239        check_point(1);
240        check_state(false, false, TIPM_ENAALL, false, false, true);
241
242        ercd = ref_tex(TSK_SELF, &rtex);
243        check_ercd(ercd, E_OK);
244
245        check_assert((rtex.texstat & TTEX_DIS) != 0U);
246
247        check_assert(rtex.pndptn == 0U);
248
249        ercd = ras_tex(TASK3, 0x0001);
250        check_ercd(ercd, E_OBJ);
251
252        ercd = ras_tex(TASK4, 0x0001);
253        check_ercd(ercd, E_OBJ);
254
255        ercd = ref_tex(TASK3, &rtex);
256        check_ercd(ercd, E_OBJ);
257
258        ercd = ref_tex(TASK4, &rtex);
259        check_ercd(ercd, E_OBJ);
260
261        check_point(2);
262        ercd = ena_tex();
263        check_ercd(ercd, E_OK);
264
265        check_state(false, false, TIPM_ENAALL, false, false, false);
266
267        ercd = ref_tex(TSK_SELF, &rtex);
268        check_ercd(ercd, E_OK);
269
270        check_assert((rtex.texstat & TTEX_ENA) != 0U);
271
272        check_assert(rtex.pndptn == 0U);
273
274        check_point(3);
275        ercd = ras_tex(TSK_SELF, 0x0001);
276        check_ercd(ercd, E_OK);
277
278        check_point(6);
279        check_state(false, false, TIPM_ENAALL, false, false, false);
280
281        check_point(7);
282        ercd = dis_dsp();
283        check_ercd(ercd, E_OK);
284
285        ercd = dis_tex();
286        check_ercd(ercd, E_OK);
287
288        check_state(false, false, TIPM_ENAALL, true, true, true);
289
290        check_point(8);
291        ercd = ras_tex(TASK1, 0x0002);
292        check_ercd(ercd, E_OK);
293
294        ercd = ref_tex(TSK_SELF, &rtex);
295        check_ercd(ercd, E_OK);
296
297        check_assert((rtex.texstat & TTEX_DIS) != 0);
298
299        check_assert(rtex.pndptn == 0x0002);
300
301        check_point(9);
302        ercd = ena_tex();
303        check_ercd(ercd, E_OK);
304
305        check_point(20);
306        check_state(false, false, TIPM_ENAALL, true, true, false);
307
308        check_point(21);
309        ercd = ena_dsp();
310        check_ercd(ercd, E_OK);
311
312        ercd = rot_rdq(TPRI_SELF);
313        check_ercd(ercd, E_OK);
314
315        check_point(27);
316        ercd = ras_tex(TASK2, 0x0001);
317        check_ercd(ercd, E_OK);
318
319        ercd = ref_tex(TASK2, &rtex);
320        check_ercd(ercd, E_OK);
321
322        check_point(28);
323        ercd = rot_rdq(TPRI_SELF);
324        check_ercd(ercd, E_OK);
325
326        check_point(34);
327        return;
328
329        check_point(0);
330}
331
332static uint_t   tex_task1_count = 0;
333
334void
335tex_task1(TEXPTN texptn, intptr_t exinf)
336{
337        ER_UINT ercd;
338
339        switch (++tex_task1_count) {
340        case 1:
341                check_point(4);
342                check_assert(texptn == 0x0001);
343
344                check_state(false, false, TIPM_ENAALL, false, false, true);
345
346                check_point(5);
347                ercd = dis_dsp();
348                check_ercd(ercd, E_OK);
349
350                ercd = chg_ipm(TMAX_INTPRI);
351                check_ercd(ercd, E_OK);
352
353                ercd = ena_tex();
354                check_ercd(ercd, E_OK);
355
356                ercd = loc_cpu();
357                check_ercd(ercd, E_OK);
358
359                check_state(false, true, TMAX_INTPRI, true, true, false);
360
361                return;
362
363                check_point(0);
364
365        case 2:
366                check_point(10);
367                check_assert(texptn == 0x0002);
368
369                check_state(false, false, TIPM_ENAALL, true, true, true);
370
371                check_point(11);
372                ercd = ras_tex(TASK1, 0x0001);
373                check_ercd(ercd, E_OK);
374
375                ercd = ras_tex(TASK1, 0x0002);
376                check_ercd(ercd, E_OK);
377
378                check_point(12);
379                ercd = ena_dsp();
380                check_ercd(ercd, E_OK);
381
382                ercd = chg_ipm(TMAX_INTPRI);
383                check_ercd(ercd, E_OK);
384
385                ercd = loc_cpu();
386                check_ercd(ercd, E_OK);
387
388                check_state(false, true, TMAX_INTPRI, false, true, true);
389
390                return;
391
392                check_point(0);
393
394        case 3:
395                check_point(13);
396                check_assert(texptn == 0x0003);
397
398                check_state(false, false, TIPM_ENAALL, true, true, true);
399
400                check_point(14);
401                ercd = ena_dsp();
402                check_ercd(ercd, E_OK);
403
404                ercd = chg_ipm(TMAX_INTPRI);
405                check_ercd(ercd, E_OK);
406
407                ercd = ena_tex();
408                check_ercd(ercd, E_OK);
409
410                check_state(false, false, TMAX_INTPRI, false, true, false);
411
412                ercd = chg_ipm(TIPM_ENAALL);
413                check_ercd(ercd, E_OK);
414
415                ercd = chg_ipm(TMAX_INTPRI);
416                check_ercd(ercd, E_OK);
417
418                check_point(15);
419                ercd = ras_tex(TSK_SELF, 0x0004);
420                check_ercd(ercd, E_OK);
421
422                ercd = chg_ipm(TMAX_INTPRI);
423                check_ercd(ercd, E_OK);
424
425                ercd = dis_tex();
426                check_ercd(ercd, E_OK);
427
428                ercd = chg_ipm(TIPM_ENAALL);
429                check_ercd(ercd, E_OK);
430
431                ercd = chg_ipm(TMAX_INTPRI);
432                check_ercd(ercd, E_OK);
433
434                ercd = ena_tex();
435                check_ercd(ercd, E_OK);
436
437                check_point(16);
438                ercd = chg_ipm(TIPM_ENAALL);
439                check_ercd(ercd, E_OK);
440
441                check_point(19);
442                check_state(false, false, TIPM_ENAALL, false, false, false);
443
444                return;
445
446                check_point(0);
447
448        case 4:
449                check_point(17);
450                check_assert(texptn == 0x0004);
451
452                check_state(false, false, TIPM_ENAALL, false, false, true);
453
454                check_point(18);
455                ercd = dis_dsp();
456                check_ercd(ercd, E_OK);
457
458                ercd = chg_ipm(TMAX_INTPRI);
459                check_ercd(ercd, E_OK);
460
461                ercd = loc_cpu();
462                check_ercd(ercd, E_OK);
463
464                check_state(false, true, TMAX_INTPRI, true, true, true);
465
466                return;
467
468                check_point(0);
469
470        default:
471                check_point(0);
472        }
473        check_point(0);
474}
475
476void
477task2(intptr_t exinf)
478{
479        ER_UINT ercd;
480
481        check_point(22);
482        check_state(false, false, TIPM_ENAALL, false, false, true);
483
484        check_point(23);
485        ercd = ena_tex();
486        check_ercd(ercd, E_OK);
487
488        check_state(false, false, TIPM_ENAALL, false, false, false);
489
490        ercd = rot_rdq(TPRI_SELF);
491        check_ercd(ercd, E_OK);
492
493        check_point(30);
494        ercd = ras_tex(TSK_SELF, 0x0002);
495        check_ercd(ercd, E_OK);
496
497        check_finish(35);
498        check_point(0);
499}
500
501static uint_t   tex_task2_count = 0;
502
503void
504tex_task2(TEXPTN texptn, intptr_t exinf)
505{
506        ER_UINT ercd;
507
508        switch (++tex_task2_count) {
509        case 1:
510                check_point(29);
511                check_assert(texptn == 0x0001);
512
513                check_state(false, false, TIPM_ENAALL, false, false, true);
514
515                return;
516
517                check_point(0);
518
519        case 2:
520                check_point(31);
521                check_assert(texptn == 0x0002);
522
523                check_state(false, false, TIPM_ENAALL, false, false, true);
524
525                check_point(32);
526                ercd = dis_dsp();
527                check_ercd(ercd, E_OK);
528
529                ercd = rot_rdq(TPRI_SELF);
530                check_ercd(ercd, E_OK);
531
532                check_point(33);
533                return;
534
535                check_point(0);
536
537        default:
538                check_point(0);
539        }
540        check_point(0);
541}
542
543void
544task3(intptr_t exinf)
545{
546        ER_UINT ercd;
547
548        check_point(24);
549        check_state(false, false, TIPM_ENAALL, false, false, true);
550
551        check_point(25);
552        ercd = ena_tex();
553        check_ercd(ercd, E_OBJ);
554
555        check_state(false, false, TIPM_ENAALL, false, false, true);
556
557        check_point(26);
558        ercd = dis_tex();
559        check_ercd(ercd, E_OBJ);
560
561        check_state(false, false, TIPM_ENAALL, false, false, true);
562
563        ercd = ext_tsk();
564        check_ercd(ercd, E_OK);
565
566        check_point(0);
567}
詳しい使い方は TracBrowser を参照してください。