54 votes

Comment les registres fs/gs sont-ils utilisés dans Linux AMD64 ?

Sur l'architecture x86-64, deux registres ont un but particulier : FS et GS. Dans linux 2.6.*, le registre FS semble être utilisé pour stocker des informations locales.

  • C'est exact ?
  • Qu'est-ce qui est stocké à fs :0 ? Existe-t-il une structure C qui décrit ce contenu ?
  • Quelle est alors l'utilisation de GS ?

7voto

firo Points 83

Quelle est alors l'utilisation de GS ?

x86_64 Le noyau Linux utilise le registre GS comme moyen efficace d'acquérir une pile d'espace de noyau pour les appels système.

Le

registre GS stocke l'adresse de base pour la zone par processeur. Pour acquérir la pile d'espace du noyau, dans entry_SYSCALL_64

movq    PER_CPU_VAR(cpu_current_top_of_stack), %rsp

Après expansion PER_CPU_VAR, nous obtenons ce qui suit :

movq    %gs:cpu_current_top_of_stack, %rsp

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X