Line
Link Here
|
0 |
-- a/checkvm/checkvm.c |
0 |
++ b/checkvm/checkvm.c |
Lines 79-86
getVersion(uint32 *version)
Link Here
|
79 |
{ |
79 |
{ |
80 |
uint32 eax, ebx, ecx, edx; |
80 |
uint32 eax, ebx, ecx, edx; |
81 |
|
81 |
|
82 |
__asm__ volatile("inl (%%dx)" : |
82 |
__asm__ volatile("pushl %%ebx \n\t" |
83 |
"=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : |
83 |
"inl (%%dx) \n\t" |
|
|
84 |
"movl %%ebx, %3 \n\t" |
85 |
"popl %%ebx \n\t" : |
86 |
"=a"(eax), "=c"(ecx), "=d"(edx), "=r"(ebx) : |
84 |
"0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETVERSION), |
87 |
"0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETVERSION), |
85 |
"2"(BDOOR_PORT) : "memory"); |
88 |
"2"(BDOOR_PORT) : "memory"); |
86 |
version[0] = eax; |
89 |
version[0] = eax; |
Lines 97-103
getHWVersion(uint32 *hwVersion)
Link Here
|
97 |
uint32 eax, ebx, ecx, edx; |
100 |
uint32 eax, ebx, ecx, edx; |
98 |
|
101 |
|
99 |
__asm__ volatile("inl (%%dx)" : |
102 |
__asm__ volatile("inl (%%dx)" : |
100 |
"=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : |
103 |
"=a"(eax), "=c"(ecx), "=d"(edx), "=r"(ebx) : |
101 |
"0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETHWVERSION), |
104 |
"0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETHWVERSION), |
102 |
"2"(BDOOR_PORT) : "memory"); |
105 |
"2"(BDOOR_PORT) : "memory"); |
103 |
*hwVersion = eax; |
106 |
*hwVersion = eax; |
Lines 113-119
getScreenSize(uint32 *screensize)
Link Here
|
113 |
uint32 eax, ebx, ecx, edx; |
116 |
uint32 eax, ebx, ecx, edx; |
114 |
|
117 |
|
115 |
__asm__ volatile("inl (%%dx)" : |
118 |
__asm__ volatile("inl (%%dx)" : |
116 |
"=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : |
119 |
"=a"(eax), "=c"(ecx), "=d"(edx), "=r"(ebx) : |
117 |
"0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETSCREENSIZE), |
120 |
"0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETSCREENSIZE), |
118 |
"2"(BDOOR_PORT) : "memory"); |
121 |
"2"(BDOOR_PORT) : "memory"); |
119 |
*screensize = eax; |
122 |
*screensize = eax; |