Я пытаюсь загрузить адрес массива char в качестве аргумента системного вызова, прототип которого должен быть
asmlinkage long sys_mknod(const char __user *filename, int mode, unsigned dev);
, поэтому я написал следующий код:
char filepath[] = "/usr/whatever/filepath";
mode_t mode = ...
dev_t dev = ...
..
..
asm volatile(" movq $133, %rax "); // System call number (64 bit)
asm volatile (" leaq path(%rip), %rdi ");
asm volatile(" movq mode, %rsi ");
asm volatile(" movq dev, %rdx ");
asm volatile(" syscall ");
I'mЯ не очень привык к синтаксису AT & T и 64-битному программированию, я думаю, что загрузка адреса правильная, но код продолжает сбивать всю систему.
Что с ним не так?