Commit 2a29ca73c9101ae46e85077178d3fcd1b38cfa0c

Authored by bellard
1 parent 54936004

more exception tests


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@159 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 19 additions and 3 deletions
tests/testsig.c
... ... @@ -67,7 +67,7 @@ int tab[2];
67 67 int main(int argc, char **argv)
68 68 {
69 69 struct sigaction act;
70   - int val;
  70 + volatile int val;
71 71  
72 72 act.sa_sigaction = sig_handler;
73 73 sigemptyset(&act.sa_mask);
... ... @@ -75,6 +75,7 @@ int main(int argc, char **argv)
75 75 sigaction(SIGFPE, &act, NULL);
76 76 sigaction(SIGILL, &act, NULL);
77 77 sigaction(SIGSEGV, &act, NULL);
  78 + sigaction(SIGTRAP, &act, NULL);
78 79  
79 80 /* test division by zero reporting */
80 81 if (setjmp(jmp_env) == 0) {
... ... @@ -112,6 +113,11 @@ int main(int argc, char **argv)
112 113 asm volatile ("int $0xfd");
113 114 }
114 115  
  116 + printf("INT3 exception:\n");
  117 + if (setjmp(jmp_env) == 0) {
  118 + asm volatile ("int3");
  119 + }
  120 +
115 121 printf("CLI exception:\n");
116 122 if (setjmp(jmp_env) == 0) {
117 123 asm volatile ("cli");
... ... @@ -158,10 +164,20 @@ int main(int argc, char **argv)
158 164  
159 165 printf("HLT exception:\n");
160 166 if (setjmp(jmp_env) == 0) {
161   - asm volatile ("hlt" : : "d" (0x4321), "D" (tab), "c" (1));
  167 + asm volatile ("hlt");
162 168 }
163 169  
164   -#if 0
  170 + printf("single step exception:\n");
  171 + val = 0;
  172 + if (setjmp(jmp_env) == 0) {
  173 + asm volatile ("pushf\n"
  174 + "orl $0x00100, (%%esp)\n"
  175 + "popf\n"
  176 + "movl $0xabcd, %0\n" : "=m" (val) : : "cc", "memory");
  177 + }
  178 + printf("val=0x%x\n", val);
  179 +
  180 +#if 1
165 181 {
166 182 int i;
167 183 act.sa_handler = alarm_handler;
... ...