Открыть системный вызов 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

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