ウォッチドッグタイマー (WDT)
2025/3/9時点のwdtの翻訳
M1にはウォッチドッグタイマーが搭載されており、カーネルが正常に起動・実行できない場合に自動的にシステムを再起動させることが できます。また、他の状況下で即時または遅延リブートをトリガーするために使用(悪用)することができます。
初期のmacho(通常は m1n1)はウォッチドッグタイマーを有効にした状態で起動されるので、何もしなければしばらくすると 自動的にシステムがリブートされます。
0x23d2b0000+0x10に24MHzの32ビットタイマ、0x23d2b0000+0x14に比較値(初期設定は120秒)、0x23d2b0000+0x1cにコントロール レジスタが存在します。タイマが比較値を上回りコントロールレジスタのビット0x04がセットされると、リブートがトリガされます。
WDTは+0x1cに0を書き込むと無効になり、+0x1cに4を書き込むと有効になります。
カウンターは32ビット値でラップしているので、最大タイムアウトは3分弱ということになります。
レジスタ 0x23d2b0000+0x0/0x4/0xc と 0x23d2b0000+0x20/0x24/0x2c は +0x10,+0x14,0x1c と同様に動作するようですが、 代わりにリカバリーモードへの再起動をトリガーします。