81: OS_LoadContext での movs による切り替え


最新状況

カテゴリ OS
タイトル OS_LoadContext での movs による切り替え
状態 作業中
優先度 緊急
種別 バグ報告
担当者 矢田
作成日時 2003/11/28 11:00:02
最終更新日時 2003/12/01 20:19:33

履歴

1 | 2003/11/28 11:00:02 | OS | 新規 | 緊急 | バグ報告 | 矢田
安本吉孝
OS_LoadContext での movs による切り替え
よくよく考えたのですが、OS_LoadContext で CPSR の値をコンテキストから復帰させたと
きに thumb/arm モードも切り替わってしまうので、arm 前提でかかれている現在の 
OS_LoadContext は、thumb に切り替わった瞬間に暴走してしまいます.

CPSR と PC の書き換えを同一命令で行なう必要があります.なので面倒でも一旦 irq モ
ードなどにきりかえたあとで movs 命令を使うように修正しなければなりません.

2 | 2003/11/29 10:31:43 | OS | 作業中 | 緊急 | バグ報告 | 矢田
矢田裕人
OS_LoadContext での movs による切り替え
>irq モードなどにきりかえたあとで movs 命令を使うように

irqモードにソフトウェアで強引に切り替えるようにしましたが
この方法を用いて良いかを中島君に確認します。

というわけで状態を作業中に。

3 | 2003/12/01 10:42:46 | OS | 作業中 | 緊急 | バグ報告 | 矢田
矢田裕人
OS_LoadContext での movs による切り替え
> irqモードにソフトウェアで強引に切り替えるようにしましたが
> この方法を用いて良いかを中島君に確認します。
> というわけで状態を作業中に。

CPSRのモードビットを弄ってモードを切り替えてもいいようです。

あとは「^」によるユーザレジスタアクセスという、エミュレータの修正待ちですね。

4 | 2003/12/01 20:19:33 | OS | 作業中 | 緊急 | バグ報告 | 矢田
矢田裕人
OS_LoadContext での movs による切り替え
> あとは「^」によるユーザレジスタアクセス
はすでに対応されています。

スタックに積まれるPCが4バイト先というトラップも掻い潜って、
IRQでのコンテキストスイッチも動作します。

しかしSVCモードに入ってからスレッドが切り替わった場合に不都合があります。
SVCのスタックを現在のスレッドのスタックに積むという案が出ており、
その方向で作業を進めます。

[リプライをつける|レポートの分割]
Bug Tracking System 影舞 version 0.8.3
Powered by Ruby version 1.6.8