diff options
| author | fishsoupisgood <github@madingley.org> | 2019-04-29 01:17:54 +0100 | 
|---|---|---|
| committer | fishsoupisgood <github@madingley.org> | 2019-05-27 03:43:43 +0100 | 
| commit | 3f2546b2ef55b661fd8dd69682b38992225e86f6 (patch) | |
| tree | 65ca85f13617aee1dce474596800950f266a456c /tests/tcg/test-i386-vm86.S | |
| download | qemu-master.tar.gz qemu-master.tar.bz2 qemu-master.zip  | |
Diffstat (limited to 'tests/tcg/test-i386-vm86.S')
| -rw-r--r-- | tests/tcg/test-i386-vm86.S | 103 | 
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/tcg/test-i386-vm86.S b/tests/tcg/test-i386-vm86.S new file mode 100644 index 00000000..3bb96c99 --- /dev/null +++ b/tests/tcg/test-i386-vm86.S @@ -0,0 +1,103 @@ +        .code16 +        .globl vm86_code_start +        .globl vm86_code_end + +#define GET_OFFSET(x) ((x) - vm86_code_start + 0x100) + +vm86_code_start: +        movw $GET_OFFSET(hello_world), %dx +        movb $0x09, %ah +        int $0x21 + +        /* prepare int 0x90 vector */ +        xorw %ax, %ax +        movw %ax, %es +        es movw $GET_OFFSET(int90_test), 0x90 * 4 +        es movw %cs, 0x90 * 4 + 2 + +        /* launch int 0x90 */ + +        int $0x90 + +        /* test IF support */ +        movw $GET_OFFSET(IF_msg), %dx +        movb $0x09, %ah +        int $0x21 + +        pushf +        popw %dx +        movb $0xff, %ah +        int $0x21 + +        cli +        pushf +        popw %dx +        movb $0xff, %ah +        int $0x21 + +        sti +        pushfl +        popl %edx +        movb $0xff, %ah +        int $0x21 + +#if 0 +        movw $GET_OFFSET(IF_msg1), %dx +        movb $0x09, %ah +        int $0x21 + +        pushf +        movw %sp, %bx +        andw $~0x200, (%bx) +        popf +#else +        cli +#endif + +        pushf +        popw %dx +        movb $0xff, %ah +        int $0x21 + +        pushfl +        movw %sp, %bx +        orw $0x200, (%bx) +        popfl + +        pushfl +        popl %edx +        movb $0xff, %ah +        int $0x21 + +        movb $0x00, %ah +        int $0x21 + +int90_test: +        pushf +        pop %dx +        movb $0xff, %ah +        int $0x21 + +        movw %sp, %bx +        movw 4(%bx), %dx +        movb $0xff, %ah +        int $0x21 + +        movw $GET_OFFSET(int90_msg), %dx +        movb $0x09, %ah +        int $0x21 +        iret + +int90_msg: +        .string "INT90 started\n$" + +hello_world: +        .string "Hello VM86 world\n$" + +IF_msg: +        .string "VM86 IF test\n$" + +IF_msg1: +        .string "If you see a diff here, your Linux kernel is buggy, please update to 2.4.20 kernel\n$" + +vm86_code_end:  | 
