Test cmps between two IO locations.
PATCH 1/2 Test cmps between two IO locations.
Signed-off-by Gleb Natapov <[email protected]>
--- kvm/user/test/x86/emulator.c | 22 ++++++++++++++-------- roms/seabios | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-)
kvm/user/test/x86/emulator.c +14 -8
@@ -17,18 +17,11 @@ void report(const char *name, int result) } } -void test_cmps (void *mem) +void test_cmps_one (unsigned char *m1,unsigned char *m3) { -unsigned char *m1 = mem, *m2 = mem +1024 ; -unsigned char m3[1024 ];void *rsi, *rdi;long rcx, tmp; -for (int i =0 ; i <100 ; ++i) - m1[i] = m2[i] = m3[i] = i; -for (int i =100 ; i <200 ; ++i) - m1[i] = (m3[i] = m2[i] = i) +1 ; - rsi = m1; rdi = m3; rcx =30 ; asmvolatile ("xor %[tmp], %[tmp] \n\t" "repe/cmpsb"
@@ -91,6 +84,19 @@ void test_cmps(void *mem) } +void test_cmps (void *mem) +{ +unsigned char *m1 = mem, *m2 = mem +1024 ; +unsigned char m3[1024 ]; + +for (int i =0 ; i <100 ; ++i) + m1[i] = m2[i] = m3[i] = i; +for (int i =100 ; i <200 ; ++i) + m1[i] = (m3[i] = m2[i] = i) +1 ; +test_cmps_one (m1, m3); +test_cmps_one (m1, m2); +} +void test_cr8 (void ) {unsigned long src, dst;
roms/seabios +1 -1
@@ -1 +1 @@ -Subproject commit 8f469b9676127ba6bb52609d89ec774e61db0ee1 +Subproject commit 0360e8e69bb3a773ceb9d2b091b62c027bca862b
Signature · 1 line
1.6.5
PATCH 2/2 Add test for ljmp.
Test that ljmp with operand in IO memory works.
Signed-off-by Gleb Natapov <[email protected]>
--- kvm/user/test/x86/emulator.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
kvm/user/test/x86/emulator.c +14 -0
@@ -183,6 +183,19 @@ void test_pop(void *mem)report ("ret" ,1 ); } +void test_ljmp (void *mem) +{ +unsigned char *m = mem; +volatile int res =1 ; + + *(unsigned long **)m = &&jmpf; + asmvolatile ("data16/mov %%cs, %0" :"=m" (*(m +sizeof (unsigned long )))); + asmvolatile ("rex64/ljmp *%0" ::"m" (*m)); + res =0 ; +jmpf: +report ("ljmp" , res); +} +unsigned long read_cr0 (void ) {unsigned long cr0;
@@ -258,6 +271,7 @@ int main()test_smsw ();test_lmsw (); +test_ljmp (mem);printf ("\nSUMMARY: %d tests, %d failures\n" , tests, fails);return fails ?1 :0 ;
Signature · 1 line
1.6.5
Marcelo Tosatti
AppliedRe: [PATCH 2/2] Add test for ljmp.
Quoted 3 lines · Gleb Natapov
Test that ljmp with operand in IO memory works.
Signed-off-by Gleb Natapov <[email protected]>
Applied both, thanks.