]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
x86: Simplify set_svm_segment_from_segment
authorJan Kiszka <jan.kiszka@siemens.com>
Sun, 5 Apr 2015 07:36:44 +0000 (09:36 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 10 Apr 2015 07:00:53 +0000 (09:00 +0200)
No need to complain: segment.access_rights is generic as it simply holds
bits 8..23 of the second descriptor dword. The additional invalid bit
used by VMX only can be ignored by SVM - and it is already, even when
leaving out the explicit test.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/x86/svm.c

index bafd2fbbdb4b5a2957f200862d79fc200410faf4..5ac56d3f83a546f5aca09d192e929033bf04bfc1 100644 (file)
@@ -139,22 +139,12 @@ static void set_svm_segment_from_dtr(struct svm_segment *svm_segment,
        *svm_segment = tmp;
 }
 
-/* TODO: struct segment needs to be x86 generic, not VMX-specific one here */
 static void set_svm_segment_from_segment(struct svm_segment *svm_segment,
                                         const struct segment *segment)
 {
-       u32 ar;
-
        svm_segment->selector = segment->selector;
-
-       if (segment->access_rights == 0x10000) {
-               svm_segment->access_rights = 0;
-       } else {
-               ar = segment->access_rights;
-               svm_segment->access_rights =
-                       ((ar & 0xf000) >> 4) | (ar & 0x00ff);
-       }
-
+       svm_segment->access_rights = ((segment->access_rights & 0xf000) >> 4) |
+               (segment->access_rights & 0x00ff);
        svm_segment->limit = segment->limit;
        svm_segment->base = segment->base;
 }