source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/ia32/pcat/sys_support.S@ 26

Last change on this file since 26 was 26, checked in by ykominami, 12 years ago

initial

File size: 4.6 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000,2001 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2002 by Monami software, Limited Partners.
9 * Copyright (C) 2002 by MURANAKA Masaki
10 * Copyright (C) 2008- by Monami Software Limited Partnership, JAPAN
11 *
12 * 上記著作権者
13は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15 * 変・再é…
16å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
44 * 由に基づく請求からも,上記著作権者
45およびTOPPERSプロジェクトを
46 * å…
47è²¬ã™ã‚‹ã“と.
48 *
49 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
50お
51 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
52 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
53 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
54 * の責任を負わない.
55 *
56 * @(#) $Id: sys_support.S,v 1.1 2004/07/21 02:49:37 monaka Exp $
57 */
58
59/*
60 * ターゲットシステム依存モジュール アセンブリ言語部(PC/AT用)
61 */
62
63#define _MACRO_ONLY
64#include "jsp_kernel.h"
65#include "offset.h"
66
67/*
68 * 低レベルのターゲットシステム依存の初期化
69 *
70 * スタートアップモジュールの中で,メモリの初期化の前に呼び出される.
71 */
72 .text
73 .globl hardware_init_hook
74hardware_init_hook:
75 movl %cr0, %eax
76 andl $~0x60000000, %eax
77 movl %eax, %cr0 /* CD = 0, NW = 0 */
78 ret;
79
80#define CALL_HANDLER(x) incl nest; sti; call x; cli; decl nest
81
82/*
83 * 割込みハンドラの出å…
84¥å£å‡¦ç†
85 *
86 * 割込み番号を%ecxにå…
87¥ã‚Œã¦å‘¼ã³å‡ºã•ã‚Œã‚‹ã€‚
88 */
89 .text
90interrupt:
91 cld
92 cmpl $0, nest
93 jne interrupt_2 /* 内
94側のハンドラ */
95 /* 外側のハンドラ */
96 movl %esp, %eax
97 movl STACKTOP, %esp
98 pushl %eax
99interrupt_2:
100 pushl %ecx /* intno */
101 movl int_table(,%ecx,4), %eax
102 testl %eax, %eax
103 jz 0f
104 CALL_HANDLER(*%eax)
1050:
106 popl %eax /* intno */
107 testb $8, %al
108 jz 1f
109 movb $0x20, %al
110 outb %al, $0xa0 /* slave non-specific EOI */
1111:
112 movb $0x20, %al
113 outb %al, $0x20 /* master non-specific EOI */
114 cmpl $0, nest
115 jne interrupt_3
116 popl %eax
117 movl %eax, %esp
118 cmpl $0, reqflg
119 je interrupt_3
120ret_int:
121 movl $0, reqflg
122 cmpl $0, enadsp
123 je ret_int_r
124 movl runtsk, %ebx
125 cmpl %ebx, schedtsk
126 je ret_int_r
127 movl %esp, TCB_esp(%ebx)
128 movl $ret_int_r, %eax
129 movl %eax, TCB_eip(%ebx)
130 jmp dispatch_loop
131ret_int_r:
132 call calltex
133interrupt_3:
134 popa
135 iret
136
137#define interrupt(intno) \
138 .global interrupt##intno ; \
139interrupt##intno: ; \
140 pusha ; \
141 movl $intno, %ecx ; \
142 jmp interrupt
143
144 interrupt(0)
145 interrupt(1)
146 interrupt(2)
147 interrupt(3)
148 interrupt(4)
149 interrupt(5)
150 interrupt(6)
151 interrupt(7)
152 interrupt(8)
153 interrupt(9)
154 interrupt(10)
155 interrupt(11)
156 interrupt(12)
157 interrupt(13)
158 interrupt(14)
159 interrupt(15)
Note: See TracBrowser for help on using the repository browser.