Открыть системный вызов 56 ARMv8 не удалосьLinux

Ответить
Anonymous
 Открыть системный вызов 56 ARMv8 не удалось

Сообщение Anonymous »

Я пытаюсь открыть свой геймпад Xbox по адресу /dev/input/js0 с помощью syscall 56. Я проверил существование устройств по указанному пути. В том числе через тестовую программу, написанную на C с помощью open(). Однако программа продолжает разветвляться FailExit.

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

.global main

.section .text
.align 2
main:
ldr x0, =GamepadPath
mov x1, #0
mov x8, #56
svc #0

cmp x0, #0
blt FailExit

mov x0, #1
ldr x1, =SuccessMsg
mov x2, #25
mov x8, #64
svc #0

mov x0, #0
mov x8, #93
svc #0

FailExit:
mov x0, #1
ldr x1, =ErrorMsg
mov x2, #25
mov x8, #64
svc #0
mov x0, #0
mov x8, #93
svc #0

.section .data

.section .rodata
GamepadPath: .asciz "/dev/input/js0"
SuccessMsg: .asciz "Gamepad Connected\n\n"
ErrorMsg: .asciz "Gamepad Not Available\n\n"

.section .bss
Я попытался понять несколько ссылок, в том числе:
openat(2) — справочная страница Linux
ARM64.Syscall.sh
Что меня смущает, так это то, что первый аргумент Syscall 56, OpenAt в x0 должен быть возвращаемым значением, установленным системным вызовом Open, который я не могу найти ни в одной ссылке на ARMv8 Linux.

Подробнее здесь: https://stackoverflow.com/questions/786 ... rmv8-fails
Ответить

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

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

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

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

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