Почему регистры и порядок системных вызовов изменились с Intel 32bit на 64bit?

С помощью электронной почты от Бенджамина Тиссуара (автора драйвера) я смог решить эту проблему. Проблема в том, что ядро ​​3.19 включало изменения для запуска T650 в режиме, в котором его данные интерпретируются программным обеспечением, что позволяет обрабатывать жесты и тому подобное с помощью того же кода, что и для других сенсорных панелей. К сожалению, это вызывает проблему, которую я заметил, а также некоторые изменения в обработке жестов. Бенджамин упомянул, что он добавит в поток параметр disable_raw_mode , который в основном отменяет это изменение во время выполнения.

Чтобы включить этот параметр,

  1. добавьте options hid_logitech_hidpp disable_raw_mode = 1 в /etc/modprobe.d/hid_logitech_hidpp.conf
  2. выключите хост, удалите "объединяющий приемник" "(маленький USB-ключ) и выключите T650 (установите переключатель слева так, чтобы он был красным).
  3. включите хост и выполните процесс загрузки Linux.
  4. снова вставьте приемник и снова включите T650.

Я обнаружил, что выключение и повторное включение питания самого T650 является важной частью этого процесса: без него устройство все еще имеет «мертвую» зону.

Вы можете проверить правильность поведения с помощью программы evtest ; запустите его как root и выберите вход, соответствующий «Logitech T650». Если при нажатии на самый край стеклянной поверхности отображается EV_KEY ... BTN_LEFT , значит, все в порядке. Если ничего не появляется, проблема не решена.

3
11.02.2018, 15:01
1 ответ

Depende en gran medida del núcleo, sin embargo, hay una buena razón para usar la convención de llamada elegida en 64 -bit x86 :coincide con la convención de espacio del usuario elegido -. El sistema V x86 -64 ABI, que es lo que usa Linux, especifica que las funciones usan registros %rdi, %rsi, %rdx, %rcx, %r8y %r9para pasar argumentos. La convención de llamada al sistema es muy parecida a :, la única diferencia es que usa %r10en lugar de %rcx, principalmente porque SYSCALL, una nueva instrucción de 64 -bits utilizada para invocar llamadas al sistema, necesita %rcxpara otros fines.

8
27.01.2020, 21:15

Теги

Похожие вопросы