source: azure_iot_hub_riscv/trunk/asp_baseplatform/arch/riscv_gcc/makeoffset.c@ 453

Last change on this file since 453 was 453, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 4.3 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004-2012 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2017-2019 by TOPPERS PROJECT Educational Working Group.
11 *
12 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 * スコード中に含まれていること.
18 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 * の無保証規定を掲載すること.
22 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24 * と.
25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28 * 報告すること.
29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
32 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
33 * 免責すること.
34 *
35 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
36 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
37 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
38 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
39 * の責任を負わない.
40 *
41 * @(#) $Id$
42 */
43
44#include "kernel_impl.h"
45#include "task.h"
46#include "sil.h"
47
48#define OFFSET_DEF(TYPE, FIELD) \
49 Asm("OFFSET_DEF " #TYPE "_" #FIELD " = %0" \
50 : /* no output */ \
51 : "g"(offsetof(TYPE, FIELD)))
52
53#define OFFSET_DEF2(TYPE, FIELD, FIELDNAME) \
54 Asm("OFFSET_DEF " #TYPE "_" #FIELDNAME " = %0" \
55 : /* no output */ \
56 : "g"(offsetof(TYPE, FIELD)))
57
58void
59makeoffset(void)
60{
61 OFFSET_DEF(TCB, p_tinib);
62 OFFSET_DEF(TCB, texptn);
63 OFFSET_DEF2(TCB, tskctxb.sp, sp);
64 OFFSET_DEF2(TCB, tskctxb.pc, pc);
65
66 OFFSET_DEF(TINIB, exinf);
67 OFFSET_DEF(TINIB, task);
68}
69
70void
71sil_endian(void)
72{
73#ifdef SIL_ENDIAN_BIG /* ビッグエンディアンプロセッサ */
74 Asm("SIL_ENDIAN = BIG");
75#else /* SIL_ENDIAN_BIG */
76#ifdef SIL_ENDIAN_LITTLE /* リトルエンディアンプロセッサ */
77 Asm("SIL_ENDIAN = LITTLE");
78#endif /* SIL_ENDIAN_LITTLE */
79#endif /* SIL_ENDIAN_BIG */
80}
81
82uint32_t BIT_REF_4 = 0x12345678;
83uint16_t BIT_REF_2 = 0x1234;
84uint8_t BIT_REF_1 = 0x12;
85
86TCB BIT_BB_TCB_enatex = {
87 { NULL, NULL }, /* task_queue */
88 NULL, /* p_tinib */
89 0U, /* tstat */
90#ifdef TOPPERS_SUPPORT_MUTEX
91 0U, /* bpriority */
92#endif /* TOPPERS_SUPPORT_MUTEX */
93 0U, /* priority */
94 false, /* acqeue */
95 false, /* wupque */
96 true, /* enatex */
97 0U, /* texptn */
98 NULL, /* p_winifo */
99#ifdef TOPPERS_SUPPORT_MUTEX
100 { NULL, NULL }, /* mutex_queue */
101#endif /* TOPPERS_SUPPORT_MUTEX */
102#ifdef TOPPERS_SUPPORT_OVRHDR
103 0U, /* leftotm */
104#endif /* TOPPERS_SUPPORT_OVRHDR */
105 { NULL, NULL } /* tskctxb */
106};
Note: See TracBrowser for help on using the repository browser.