#include <stdint.h>
int64_t
linux_system_call_6_x86_64(uint64_t number,
uint64_t _1, uint64_t _2, uint64_t _3,
uint64_t _4, uint64_t _5, uint64_t _6)
{
int64_t return_value;
register uint64_t r10 __asm__ ("r10") = _4;
register uint64_t r8 __asm__ ("r8") = _5;
register uint64_t r9 __asm__ ("r9") = _6;
__asm__ volatile ( "syscall"
: "=a" (return_value)
: "a" (number), "D" (_1), "S" (_2), "d" (_3), "r" (r10), "r" (r8), "r" (r9)
: "rcx", "r11", "cc", "memory");
return return_value;
}
#define system_call_1(number, _1) \
linux_system_call_6_x86_64((number), (_1), 0, 0, 0, 0, 0)
#define system_call_3(number, _1, _2, _3) \
linux_system_call_6_x86_64((number), (_1), (_2), (_3), 0, 0, 0)
int main(void) {
static const char message[] = "System calls work." "\n";
/* write stdout message sizeof(message) */
system_call_3(1, 1, message, sizeof message);
/* exit 0 */
system_call_1(60, 0);
return 1; /* Unreachable. */
}
I2luY2x1ZGUgPHN0ZGludC5oPgoKaW50NjRfdApsaW51eF9zeXN0ZW1fY2FsbF82X3g4Nl82NCh1aW50NjRfdCBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IF8xLCB1aW50NjRfdCBfMiwgdWludDY0X3QgXzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IF80LCB1aW50NjRfdCBfNSwgdWludDY0X3QgXzYpCnsKICAgIGludDY0X3QgcmV0dXJuX3ZhbHVlOwoKICAgIHJlZ2lzdGVyIHVpbnQ2NF90IHIxMCBfX2FzbV9fICgicjEwIikgPSBfNDsKICAgIHJlZ2lzdGVyIHVpbnQ2NF90IHI4ICBfX2FzbV9fICgicjgiKSAgPSBfNTsKICAgIHJlZ2lzdGVyIHVpbnQ2NF90IHI5ICBfX2FzbV9fICgicjkiKSAgPSBfNjsKCiAgICBfX2FzbV9fIHZvbGF0aWxlICggInN5c2NhbGwiCiAgICAgICAgICAgICAgICAgICAgIDogIj1hIiAocmV0dXJuX3ZhbHVlKQogICAgICAgICAgICAgICAgICAgICA6ICJhIiAobnVtYmVyKSwgIkQiIChfMSksICJTIiAoXzIpLCAiZCIgKF8zKSwgInIiIChyMTApLCAiciIgKHI4KSwgInIiIChyOSkKICAgICAgICAgICAgICAgICAgICAgOiAicmN4IiwgInIxMSIsICJjYyIsICJtZW1vcnkiKTsKCiAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwp9CgojZGVmaW5lIHN5c3RlbV9jYWxsXzEobnVtYmVyLCBfMSkgXAogICAgICAgIGxpbnV4X3N5c3RlbV9jYWxsXzZfeDg2XzY0KChudW1iZXIpLCAoXzEpLCAwLCAwLCAwLCAwLCAwKQoKI2RlZmluZSBzeXN0ZW1fY2FsbF8zKG51bWJlciwgXzEsIF8yLCBfMykgXAogICAgICAgIGxpbnV4X3N5c3RlbV9jYWxsXzZfeDg2XzY0KChudW1iZXIpLCAoXzEpLCAoXzIpLCAoXzMpLCAwLCAwLCAwKQoKaW50IG1haW4odm9pZCkgewogICAgc3RhdGljIGNvbnN0IGNoYXIgbWVzc2FnZVtdID0gIlN5c3RlbSBjYWxscyB3b3JrLiIgIlxuIjsKCiAgICAvKiB3cml0ZSBzdGRvdXQgbWVzc2FnZSBzaXplb2YobWVzc2FnZSkgKi8KICAgIHN5c3RlbV9jYWxsXzMoMSwgMSwgbWVzc2FnZSwgc2l6ZW9mIG1lc3NhZ2UpOwoKICAgIC8qIGV4aXQgMCAqLwogICAgc3lzdGVtX2NhbGxfMSg2MCwgMCk7CgogICAgcmV0dXJuIDE7IC8qIFVucmVhY2hhYmxlLiAqLwp9