2012-03-05 18 views
2

コプロセッサレジスタcp15 c3にあるドメインアクセス制御レジスタのすべてのドメインを常に無効にする必要があるのはなぜかと思います。これは通常、以下のような起動コードでMCR命令を使用して行われます。ARM - ドメインアクセス制御レジスタ

MVN r1, #0 
MCR p15, 0, r1, c3, c0, 0 

すべて0をc3にロードして、すべてを無効にする理由domains

答えて

3

ドメインアクセスコントロールレジスタのドメインを無効にする必要はありません。実際には、MMUが有効になっていると常にドメインアクセスがチェックされるので、それは可能でもありません。 DACRに値を読み込んで実際に行うことは、ドメインのアクセス許可を設定することです。 The pageあなたは、DACSのビットの意味を正確に記述するリンクを投稿しました。一般に:

  • - 全て
  • でないアクセス - アクセスは、TLBエントリに
  • をagains値をチェック - アクセスは常に足すを意味

を許可DACRに0xFFFFFFFFはメモリ保護をオフにします。それはまさにあなたが投稿したコードがしていることです。通知指示mvn、それはmovとは異なるものです。 mvn <Rd>, <Rm>は "Move NOT"命令で、<Rm>の補数を<Rd>に書き込みます。 mvn r1, #0の値の後には、r1の値は0xFFFFFFFFに等しくなります。

あなたが遭遇したスタートアップコードは、おそらくメモリ保護を必要とせず、後で有効にするために一時的にオフにするだけです。それにもかかわらず、常にすべてのドメインに完全にアクセスできるようにすることは、あらゆる種類のルールではありません。

+0

私は本当にうんざりしていて、 'MVN'コマンドではなく' MOV'コマンドがあると思っていました。ありがとう、これは私のために物事をクリアします。 – 71GA