MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vmcs_seg_desc_encoding

Function vmcs_seg_desc_encoding

freebsd/amd64/vmm/intel/vmcs.c:133–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131}
132
133static int
134vmcs_seg_desc_encoding(int seg, uint32_t *base, uint32_t *lim, uint32_t *acc)
135{
136
137 switch (seg) {
138 case VM_REG_GUEST_ES:
139 *base = VMCS_GUEST_ES_BASE;
140 *lim = VMCS_GUEST_ES_LIMIT;
141 *acc = VMCS_GUEST_ES_ACCESS_RIGHTS;
142 break;
143 case VM_REG_GUEST_CS:
144 *base = VMCS_GUEST_CS_BASE;
145 *lim = VMCS_GUEST_CS_LIMIT;
146 *acc = VMCS_GUEST_CS_ACCESS_RIGHTS;
147 break;
148 case VM_REG_GUEST_SS:
149 *base = VMCS_GUEST_SS_BASE;
150 *lim = VMCS_GUEST_SS_LIMIT;
151 *acc = VMCS_GUEST_SS_ACCESS_RIGHTS;
152 break;
153 case VM_REG_GUEST_DS:
154 *base = VMCS_GUEST_DS_BASE;
155 *lim = VMCS_GUEST_DS_LIMIT;
156 *acc = VMCS_GUEST_DS_ACCESS_RIGHTS;
157 break;
158 case VM_REG_GUEST_FS:
159 *base = VMCS_GUEST_FS_BASE;
160 *lim = VMCS_GUEST_FS_LIMIT;
161 *acc = VMCS_GUEST_FS_ACCESS_RIGHTS;
162 break;
163 case VM_REG_GUEST_GS:
164 *base = VMCS_GUEST_GS_BASE;
165 *lim = VMCS_GUEST_GS_LIMIT;
166 *acc = VMCS_GUEST_GS_ACCESS_RIGHTS;
167 break;
168 case VM_REG_GUEST_TR:
169 *base = VMCS_GUEST_TR_BASE;
170 *lim = VMCS_GUEST_TR_LIMIT;
171 *acc = VMCS_GUEST_TR_ACCESS_RIGHTS;
172 break;
173 case VM_REG_GUEST_LDTR:
174 *base = VMCS_GUEST_LDTR_BASE;
175 *lim = VMCS_GUEST_LDTR_LIMIT;
176 *acc = VMCS_GUEST_LDTR_ACCESS_RIGHTS;
177 break;
178 case VM_REG_GUEST_IDTR:
179 *base = VMCS_GUEST_IDTR_BASE;
180 *lim = VMCS_GUEST_IDTR_LIMIT;
181 *acc = VMCS_INVALID_ENCODING;
182 break;
183 case VM_REG_GUEST_GDTR:
184 *base = VMCS_GUEST_GDTR_BASE;
185 *lim = VMCS_GUEST_GDTR_LIMIT;
186 *acc = VMCS_INVALID_ENCODING;
187 break;
188 default:
189 return (EINVAL);
190 }

Callers 2

vmcs_setdescFunction · 0.85
vmcs_getdescFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected