Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

syscall3

alpha.syscall3
pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64

File

lib/std/os/linux/alpha.zig:109

Code

pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 {
    // These registers are both inputs and clobbers.
    var r16_out: u64 = undefined;
    var r17_out: u64 = undefined;
    var r18_out: u64 = undefined;
    return asm volatile (
        \\ callsys
        \\ beq $19, 1f
        \\ negq $0, $0
        \\1:
        : [ret] "={$0}" (-> u64),
          [r16_out] "={$16}" (r16_out),
          [r17_out] "={$17}" (r17_out),
          [r18_out] "={$18}" (r18_out),
        : [number] "{$0}" (number),
          [arg1] "{$16}" (arg1),
          [arg2] "{$17}" (arg2),
          [arg3] "{$18}" (arg3),
        : .{
          .r1 = true,
          .r2 = true,
          .r3 = true,
          .r4 = true,
          .r5 = true,
          .r6 = true,
          .r7 = true,
          .r8 = true,
          .r22 = true,
          .r23 = true,
          .r24 = true,
          .r25 = true,
          .r27 = true,
          .r28 = true,
          .memory = true,
          .r20 = true,
          .r21 = true,
        });
}