Почему Linux5.15 Arm64 `cpu_context_switch` устанавливает `sp_el0` в следующую базу Task_structLinux

Ответить Пред. темаСлед. тема
Гость
 Почему Linux5.15 Arm64 `cpu_context_switch` устанавливает `sp_el0` в следующую базу Task_struct

Сообщение Гость »


I read the code below at

Код: Выделить всё

arch/arm64/kernel/entry.S
in Linux5.15

Код: Выделить всё

/*  * Register switch for AArch64. The callee-saved registers need to be saved  * and restored. On entry:  *   x0 = previous task_struct (must be preserved across the switch)  *   x1 = next task_struct  * Previous and next are guaranteed not to be the same.  *  */ SYM_FUNC_START(cpu_switch_to)     mov x10, #THREAD_CPU_CONTEXT // x10 = offsetof(struct task_struct, thread.cpu_context)     add x8, x0, x10 // x8 = previous cpu_context address     mov x9, sp      stp x19, x20, [x8], #16     // store callee-saved registers     stp x21, x22, [x8], #16          stp x23, x24, [x8], #16     stp x25, x26, [x8], #16     stp x27, x28, [x8], #16     stp x29, x9, [x8], #16       str lr, [x8]     add x8, x1, x10      ldp x19, x20, [x8], #16     // restore callee-saved registers     ldp x21, x22, [x8], #16     ldp x23, x24, [x8], #16     ldp x25, x26, [x8], #16     ldp x27, x28, [x8], #16     ldp x29, x9, [x8], #16      ldr lr, [x8]      mov sp, x9                     // 

Источник: [url]https://stackoverflow.com/questions/78131788/why-linux5-15-arm64-cpu-context-switch-set-sp-el0-to-next-task-struct-base[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»