linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

CPU操作 - RELOC_HIDE()

概要

CPU個別のデータを保持するアドレスを取得する

詳細

以下の場合で処理が異なる(優先度は上から順)

x86のCPUはintelのCPUのため1番目の処理となる

処理の内容としては、CPU固有の値を取得するためにCPU固有の値を保持するセクションを示すメモリアドレスにoffsetを加算して目的のCPUのデータを保持するアドレスを取得する

尚、intel以外のCPUでgccコンパイラを使用している場合は特定のCPUでメモリアドレスの読み込みがうまくできなくなるため、メモリアドレスの読み込みをインラインアセンブラでしているということだと思う