Дальний вызов кодового сегмента на x86

Я пытаюсь выполнить дальний вызов от задачи с сегментированным кодом сегмента, плоским сегментом данных и уровнем привилегий кольца 0 до другого сегмента кода с таким же уровнем привилегий со смещением ноль, но я получаю ошибку GP.

Как я делаю дальний звонок:

__asm__ volatile ("lcall *%0" :: "m" (ptr));

где ptr является переменной следующих данных (far_ptr_t):

  typedef struct {

    void* offset;
    uint16_t sel;

} __attribute__((packed)) far_ptr_t;

Когда я отлаживаю это, я вижу, что это терпит неудачу на инструкции вызова, есть ли какая-то причина, которую я должен рассмотреть, чтобы знать, почему я получаю ошибку GP?

0 ответов

Другие вопросы по тегам