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.

syscall6

alpha.syscall6
pub fn syscall6(
    number: SYS,
    arg1: u64,
    arg2: u64,
    arg3: u64,
    arg4: u64,
    arg5: u64,
    arg6: u64,
) u64

File

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

Code

pub fn syscall6(
    number: SYS,
    arg1: u64,
    arg2: u64,
    arg3: u64,
    arg4: u64,
    arg5: u64,
    arg6: u64,
) u64 {
    // These registers are both inputs and clobbers.
    var r16_out: u64 = undefined;
    var r17_out: u64 = undefined;
    var r18_out: u64 = undefined;
    var r19_out: u64 = undefined;
    var r20_out: u64 = undefined;
    var r21_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),
          [r19_out] "={$19}" (r19_out),
          [r20_out] "={$20}" (r20_out),
          [r21_out] "={$21}" (r21_out),
        : [number] "{$0}" (number),
          [arg1] "{$16}" (arg1),
          [arg2] "{$17}" (arg2),
          [arg3] "{$18}" (arg3),
          [arg4] "{$19}" (arg4),
          [arg5] "{$20}" (arg5),
          [arg6] "{$21}" (arg6),
        : .{
          .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,
        });
}