view kernel/entry.s @ 0:42f240cc4bc6

From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Sep 2009 13:44:18 +0900
parents
children
line wrap: on
line source

/**
 * entry.s
 * SPE 軽量カーネル エントリポイント
 */

.file "entry.s"

.text
	.global _entry

__SPE_LS_START__:  # 00h #

	/**
	 * ToDo: SPE で発生するイベントとかのハンドラをここに書く。
	 *       現在はとりあえず SPE プロセスマネージャに対して割り込みを発生させる。
	 */

	stop  0x3FFE

	.align 4

_entry:            # 10h #

	# スタックおよびスタックポインタの初期化
	# (cf. SPU Application Binary Interface 仕様書 v1.6 p.20)
	ila   $3, 0
	ila   $4, 0x3FFF0
	ila   $5, 0x3FFD0
	stqd  $3, 0($4)
	stqd  $4, 0($5)
	or    $1, $5, $3   # sp = 0x3FFD0 (Initial Stack Pointer)

	# SPU 割り込み機能をイネーブルにしつつ kernel.c へ
	ila   $3, start
	bisl  $0, $3
#	bisle $0, $3

	# SPE プロセスマネージャに対してプロセス終了を示す割り込みを発生させる
	stop  0x3FFD

	## stop 命令以降 SPE の実行は停止する。
	## デバイスドライバの割り込みハンドラで再びプログラムカウンタが _entry (= 0x10) へ移され、
	## 実行が再開される。

	               # 34h #