Welcome to mirror list, hosted at ThFree Co, Russian Federation.

core-ppc64.proto « images - github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bb07e09e086eb15810d2c665afad889370241e98 (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// SPDX-License-Identifier: MIT

syntax = "proto2";

import "opts.proto";

message user_ppc64_regs_entry {
	/* Following is the list of registers 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;
	/* For Transactional memory support since P8 */
	optional uint64 texasr		= 10;
	optional uint64 tfhar		= 11;
	optional uint64 tfiar		= 12;
}

message user_ppc64_fpstate_entry {
	/* Following is the list of registers 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;
}

/*
 * Transactional memory operation's state
 */
message user_ppc64_tm_regs_entry {
	required user_ppc64_regs_entry		gpregs 		= 1;
	optional user_ppc64_fpstate_entry	fpstate		= 2;
	optional user_ppc64_vrstate_entry	vrstate		= 3;
	optional user_ppc64_vsxstate_entry	vsxstate	= 4;
}

message thread_info_ppc64 {
	required uint64			 	clear_tid_addr	= 1[(criu).hex = true];
	required user_ppc64_regs_entry	 	gpregs		= 2[(criu).hex = true];
	optional user_ppc64_fpstate_entry 	fpstate		= 3;
	optional user_ppc64_vrstate_entry	vrstate		= 4;
	optional user_ppc64_vsxstate_entry	vsxstate	= 5;
	optional user_ppc64_tm_regs_entry	tmstate		= 6;
}