; intel syntax, linux, x86_64
; macro to sleep in miliseconds

%macro sleep_ms 1
    sub rsp, 16

    mov rax, %1
    mov rcx, 1000
    xor rdx, rdx
    div rcx

    mov [rsp], rax              ; tv_sec
    mov rax, rdx
    imul rax, 1000000
    mov [rsp+8], rax           ; tv_nsec

    mov rax, 35                ; sys_nanosleep
    mov rdi, rsp
    xor rsi, rsi
    syscall

    add rsp, 16
%endmacro
