blob: d616453053dec7cb22e1990bc0bea5a656d7a33e (
plain)
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
41
42
43
44
45
46
47
48
|
message user_ppc64_regs_entry {
// Following is the list of regiters starting at r0.
repeated uint64 gpr = 1;
required uint64 nip = 2;
required uint64 msr = 3;
required uint64 orig_gpr3 = 4;
required uint64 ctr = 5;
required uint64 link = 6;
required uint64 xer = 7;
required uint64 ccr = 8;
required uint64 trap = 9;
}
message user_ppc64_fpstate_entry {
// Following is the list of regiters starting at fpr0
repeated uint64 fpregs = 1;
}
message user_ppc64_vrstate_entry {
// Altivec registers
// The vector registers are 128bit registers (VSR[32..63]).
// The following vregs entry will store first the high part then the
// low one:
// VR0 = vrregs[0] << 64 | vrregs[1];
// VR1 = vrregs[2] << 64 | vrregs[3];
// ..
// The last entry stores in a 128bit field the VSCR which is a 32bit
// value returned by the kernel in a 128 field.
repeated uint64 vrregs = 1;
required uint32 vrsave = 2;
}
message user_ppc64_vsxstate_entry {
// VSX registers
// The vector-scale registers are 128bit registers (VSR[0..64]).
// Since there is an overlapping over the VSX registers by the FPR and
// the Altivec registers, only the lower part of the first 32 VSX
// registers have to be saved.
repeated uint64 vsxregs = 1;
}
message thread_info_ppc64 {
required uint64 clear_tid_addr = 1;
required user_ppc64_regs_entry gpregs = 2;
optional user_ppc64_fpstate_entry fpstate = 3;
optional user_ppc64_vrstate_entry vrstate = 4;
optional user_ppc64_vsxstate_entry vsxstate = 5;
}
|