mirror of
https://github.com/ziglang/zig.git
synced 2025-12-15 18:53:07 +00:00
std.valgrind: Port doClientRequest() to all archs supported by Valgrind.
This commit is contained in:
parent
4050d9bbf9
commit
2307cf73b0
@ -7,50 +7,96 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
|
|||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (builtin.target.cpu.arch) {
|
const args = &[_]usize{ request, a1, a2, a3, a4, a5 };
|
||||||
.x86 => {
|
|
||||||
return asm volatile (
|
return switch (builtin.cpu.arch) {
|
||||||
\\ roll $3, %%edi ; roll $13, %%edi
|
.arm, .armeb, .thumb, .thumbeb => asm volatile (
|
||||||
\\ roll $29, %%edi ; roll $19, %%edi
|
\\ mov r12, r12, ror #3 ; mov r12, r12, ror #13
|
||||||
\\ xchgl %%ebx,%%ebx
|
\\ mov r12, r12, ror #29 ; mov r12, r12, ror #19
|
||||||
: [_] "={edx}" (-> usize),
|
\\ orr r10, r10, r10
|
||||||
: [_] "{eax}" (&[_]usize{ request, a1, a2, a3, a4, a5 }),
|
: [_] "={r3}" (-> usize),
|
||||||
[_] "0" (default),
|
: [_] "{r4}" (args),
|
||||||
: "cc", "memory"
|
[_] "{r3}" (default),
|
||||||
);
|
: "cc", "memory"
|
||||||
},
|
),
|
||||||
.x86_64 => {
|
.aarch64, .aarch64_be => asm volatile (
|
||||||
return asm volatile (
|
\\ ror x12, x12, #3 ; ror x12, x12, #13
|
||||||
\\ rolq $3, %%rdi ; rolq $13, %%rdi
|
\\ ror x12, x12, #51 ; ror x12, x12, #61
|
||||||
\\ rolq $61, %%rdi ; rolq $51, %%rdi
|
\\ orr x10, x10, x10
|
||||||
\\ xchgq %%rbx,%%rbx
|
: [_] "={x3}" (-> usize),
|
||||||
: [_] "={rdx}" (-> usize),
|
: [_] "{x4}" (args),
|
||||||
: [_] "{rax}" (&[_]usize{ request, a1, a2, a3, a4, a5 }),
|
[_] "{x3}" (default),
|
||||||
[_] "0" (default),
|
: "cc", "memory"
|
||||||
: "cc", "memory"
|
),
|
||||||
);
|
.mips, .mipsel => asm volatile (
|
||||||
},
|
\\ srl $0, $0, 13
|
||||||
.aarch64 => {
|
\\ srl $0, $0, 29
|
||||||
return asm volatile (
|
\\ srl $0, $0, 3
|
||||||
\\ ror x12, x12, #3 ; ror x12, x12, #13
|
\\ srl $0, $0, 19
|
||||||
\\ ror x12, x12, #51 ; ror x12, x12, #61
|
\\ or $13, $13, $13
|
||||||
\\ orr x10, x10, x10
|
: [_] "={$11}" (-> usize),
|
||||||
: [_] "={x3}" (-> usize),
|
: [_] "{$12}" (args),
|
||||||
: [_] "{x4}" (&[_]usize{ request, a1, a2, a3, a4, a5 }),
|
[_] "{$11}" (default),
|
||||||
[_] "0" (default),
|
: "memory"
|
||||||
: "cc", "memory"
|
),
|
||||||
);
|
.mips64, .mips64el => asm volatile (
|
||||||
},
|
\\ dsll $0, $0, 3 ; dsll $0, $0, 13
|
||||||
// ppc32
|
\\ dsll $0, $0, 29 ; dsll $0, $0, 19
|
||||||
// ppc64
|
\\ or $13, $13, $13
|
||||||
// arm
|
: [_] "={$11}" (-> usize),
|
||||||
// s390x
|
: [_] "{$12}" (args),
|
||||||
// mips32
|
[_] "{$11}" (default),
|
||||||
// mips64
|
: "memory"
|
||||||
else => {
|
),
|
||||||
return default;
|
.powerpc, .powerpcle => asm volatile (
|
||||||
},
|
\\ rlwinm 0, 0, 3, 0, 31 ; rlwinm 0, 0, 13, 0, 31
|
||||||
}
|
\\ rlwinm 0, 0, 29, 0, 31 ; rlwinm 0, 0, 19, 0, 31
|
||||||
|
\\ or 1, 1, 1
|
||||||
|
: [_] "={r3}" (-> usize),
|
||||||
|
: [_] "{r4}" (args),
|
||||||
|
[_] "{r3}" (default),
|
||||||
|
: "cc", "memory"
|
||||||
|
),
|
||||||
|
.powerpc64, .powerpc64le => asm volatile (
|
||||||
|
\\ rotldi 0, 0, 3 ; rotldi 0, 0, 13
|
||||||
|
\\ rotldi 0, 0, 61 ; rotldi 0, 0, 51
|
||||||
|
\\ or 1, 1, 1
|
||||||
|
: [_] "={r3}" (-> usize),
|
||||||
|
: [_] "{r4}" (args),
|
||||||
|
[_] "{r3}" (default),
|
||||||
|
: "cc", "memory"
|
||||||
|
),
|
||||||
|
.s390x => asm volatile (
|
||||||
|
\\ lr %%r15, %%r15
|
||||||
|
\\ lr %%r1, %%r1
|
||||||
|
\\ lr %%r2, %%r2
|
||||||
|
\\ lr %%r3, %%r3
|
||||||
|
\\ lr %%r2, %%r2
|
||||||
|
: [_] "={r3}" (-> usize),
|
||||||
|
: [_] "{r2}" (args),
|
||||||
|
[_] "{r3}" (default),
|
||||||
|
: "cc", "memory"
|
||||||
|
),
|
||||||
|
.x86 => asm volatile (
|
||||||
|
\\ roll $3, %%edi ; roll $13, %%edi
|
||||||
|
\\ roll $29, %%edi ; roll $19, %%edi
|
||||||
|
\\ xchgl %%ebx, %%ebx
|
||||||
|
: [_] "={edx}" (-> usize),
|
||||||
|
: [_] "{eax}" (args),
|
||||||
|
[_] "{edx}" (default),
|
||||||
|
: "cc", "memory"
|
||||||
|
),
|
||||||
|
.x86_64 => asm volatile (
|
||||||
|
\\ rolq $3, %%rdi ; rolq $13, %%rdi
|
||||||
|
\\ rolq $61, %%rdi ; rolq $51, %%rdi
|
||||||
|
\\ xchgq %%rbx, %%rbx
|
||||||
|
: [_] "={rdx}" (-> usize),
|
||||||
|
: [_] "{rax}" (args),
|
||||||
|
[_] "{rdx}" (default),
|
||||||
|
: "cc", "memory"
|
||||||
|
),
|
||||||
|
else => default,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const ClientRequest = enum(u32) {
|
pub const ClientRequest = enum(u32) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user