File: macros_arm64.inc

package info (click to toggle)
mini-init-asm 0.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 312 kB
  • sloc: asm: 2,919; sh: 480; makefile: 70
file content (40 lines) | stat: -rw-r--r-- 714 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Common macros & helpers for Linux AArch64 syscalls

.macro SYSCALL num
    mov x8, \num
    svc #0
.endm

.macro WRITE fd, ptr, len
    mov x0, \fd
    mov x1, \ptr
    mov x2, \len
    SYSCALL SYS_write
.endm

.macro EXIT code
    mov x0, \code
    SYSCALL SYS_exit
.endm

.macro LOG msg_ptr, msg_len
    stp x0, x1, [sp, #-16]!
    stp x2, x3, [sp, #-16]!
    adrp x3, g_verbose
    add x3, x3, :lo12:g_verbose
    ldr x3, [x3]
    cbz x3, 1f
    bl get_timestamp_ptr
    mov x1, x0
    mov x0, #2
    mov x2, #19
    SYSCALL SYS_write
    mov x0, #2
    adrp x1, \msg_ptr
    add x1, x1, :lo12:\msg_ptr
    mov x2, #\msg_len
    SYSCALL SYS_write
1:
    ldp x2, x3, [sp], #16
    ldp x0, x1, [sp], #16
.endm