[test] Move i386-specific tests to arch/i386/tests

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2016-03-17 14:29:18 +00:00
parent c14971bf88
commit dbc9e591a5
5 changed files with 2 additions and 1 deletions

View File

@@ -1,40 +0,0 @@
bits 16
org 100h
jmp start
shuffle_start:
push 0xB800
pop es
mov cx, 80*24*2
mov ax, 'AA'
xor di, di
rep stosw
.lbl: jmp .lbl
shuffle_end:
nop
shuffle_len equ (shuffle_end - shuffle_start + 1)
start:
; calculate physical address of shuffled part
xor eax, eax
push ds
pop ax
shl eax, 4
add ax, shuffle_start
mov dword [source], eax
mov ax, 0012h
mov di, shuffle_descriptors
mov cx, num_shuffle_descriptors
mov ebp, 0x7c00
int 22h
int3
shuffle_descriptors:
dd 0x7C00
source: dd 0
dd shuffle_len
num_shuffle_descriptors equ 1

View File

@@ -1,136 +0,0 @@
bits 16
org 100h
_start:
; first check for SYSLINUX
mov ah, 30h
int 21h
cmp eax, 59530000h
jne .not_syslinux
cmp ebx, 4c530000h
jne .not_syslinux
cmp ecx, 4e490000h
jne .not_syslinux
cmp edx, 58550000h
jne .not_syslinux
; now get syslinux version
mov ax, 0001h
int 22h
push cx
push dx
push di
push si
push es
; print version string
mov dx, str_version
mov ah, 09h
int 21h
pop es
pop bx
push es
mov ax, 0002h
int 22h
; print copyright string
mov dx, str_copyright
mov ah, 09h
int 21h
pop es
pop bx
mov ax, 0002h
int 22h
; print syslinux derivative id
mov dx, str_derivative
mov ah, 09h
int 21h
pop ax
call print_hex_byte
; print version number
mov dx, str_version_num
mov ah, 09h
int 21h
pop cx
push cx
mov ax, cx
and ax, 0FFh
call print_dec_word
mov dl, '.'
mov ah, 02h
int 21h
pop cx
mov ax, cx
shr ax, 8
call print_dec_word
ret
.not_syslinux:
mov dx, str_not_syslinux
mov ah, 09h
int 21h
ret
; input: al = byte to print in hex
print_hex_byte:
push ax
shr al, 4
call print_hex_nybble
pop ax
call print_hex_nybble
ret
; input: bottom half of al = nybble to print in hex
print_hex_nybble:
push ax
mov bl, al
and bx, 1111b
mov dl, [str_hex + bx]
mov ah, 02h
int 21h
pop ax
ret
str_hex: db "01234567890abcdef"
; input: ax = word to print
print_dec_word:
mov cx, 10
mov word [.count], 0
.loop:
xor dx, dx
div cx
inc word [.count]
push dx
test ax, ax
jnz .loop
.print:
pop dx
add dx, '0'
mov ah, 02h
int 21h
dec word [.count]
jnz .print
ret
.count: dw 0
str_not_syslinux: db "Not SYSLINUX or derivative (running on DOS?)$"
str_version: db "Version: $"
str_copyright: db 10, "Copyright: $"
str_derivative: db 10, "Derivative ID: 0x$"
str_version_num: db 10, "Version number: $"

View File

@@ -1,54 +0,0 @@
.arch i386
.section ".data", "aw", @progbits
watch_me:
.long 0xfeedbeef
.section ".text", "ax", @progbits
.code32
gdbstub_test:
/* 1. Read registers test */
movl $0xea010203, %eax
movl $0xeb040506, %ebx
movl $0xec070809, %ecx
movl $0xed0a0b0c, %edx
movl $0x510d0e0f, %esi
movl $0xd1102030, %edi
int $3
/* 2. Write registers test */
int $3
/* 3. Read memory test */
subl $8, %esp
movl $0x11223344, 4(%esp)
movw $0x5566, 2(%esp)
movb $0x77, (%esp)
int $3
/* 4. Write memory test */
int $3
addl $8, %esp
/* 5. Step test */
int $3
nop
/* 6. Access watch test */
movl $0x600d0000, %ecx
movl watch_me, %eax
movl $0xbad00000, %ecx
int $3
movl $0x600d0001, %ecx
movl %eax, watch_me
movl $0xbad00001, %ecx
int $3
/* 7. Write watch test */
movl $0x600d0002, %ecx
movl %eax, watch_me
movl $0xbad00002, %ecx
int $3
1:
jmp 1b

View File

@@ -1,116 +0,0 @@
#!/usr/bin/gdb -x
# Test suite for GDB remote debugging
# Run:
# make bin/ipxe.hd.tmp
# make
# gdb
# (gdb) target remote :TCPPORT
# OR
# (gdb) target remote udp:IP:UDPPORT
# (gdb) source tests/gdbstub_test.gdb
define ipxe_load_symbols
file bin/ipxe.hd.tmp
end
define ipxe_assert
if $arg0 != $arg1
echo FAIL $arg2\n
else
echo PASS $arg2\n
end
end
define ipxe_start_tests
jump gdbstub_test
end
define ipxe_test_regs_read
ipxe_assert $eax 0xea010203 "ipxe_test_regs_read eax"
ipxe_assert $ebx 0xeb040506 "ipxe_test_regs_read ebx"
ipxe_assert $ecx 0xec070809 "ipxe_test_regs_read ecx"
ipxe_assert $edx 0xed0a0b0c "ipxe_test_regs_read edx"
ipxe_assert $esi 0x510d0e0f "ipxe_test_regs_read esi"
ipxe_assert $edi 0xd1102030 "ipxe_test_regs_read edi"
end
define ipxe_test_regs_write
set $eax = 0xea112233
set $ebx = 0xeb445566
set $ecx = 0xec778899
set $edx = 0xedaabbcc
set $esi = 0x51ddeeff
set $edi = 0xd1010203
c
ipxe_assert $eax 0xea112233 "ipxe_test_regs_write eax"
ipxe_assert $ebx 0xeb445566 "ipxe_test_regs_write ebx"
ipxe_assert $ecx 0xec778899 "ipxe_test_regs_write ecx"
ipxe_assert $edx 0xedaabbcc "ipxe_test_regs_write edx"
ipxe_assert $esi 0x51ddeeff "ipxe_test_regs_write esi"
ipxe_assert $edi 0xd1010203 "ipxe_test_regs_write edi"
# This assumes segment selectors are always 0x10 or 0x8 (for code).
ipxe_assert $cs 0x08 "ipxe_test_regs_write cs"
ipxe_assert $ds 0x10 "ipxe_test_regs_write ds"
end
define ipxe_test_mem_read
c
ipxe_assert ({int}($esp+4)) 0x11223344 "ipxe_test_mem_read int"
ipxe_assert ({short}($esp+2)) 0x5566 "ipxe_test_mem_read short"
ipxe_assert ({char}($esp)) 0x77 "ipxe_test_mem_read char"
end
define ipxe_test_mem_write
set ({int}($esp+4)) = 0xaabbccdd
set ({short}($esp+2)) = 0xeeff
set ({char}($esp)) = 0x99
c
ipxe_assert ({int}($esp+4)) 0xaabbccdd "ipxe_test_mem_write int"
ipxe_assert ({short}($esp+2)) (short)0xeeff "ipxe_test_mem_write short"
ipxe_assert ({char}($esp)) (char)0x99 "ipxe_test_mem_write char"
end
define ipxe_test_step
c
si
ipxe_assert ({char}($eip-1)) (char)0x90 "ipxe_test_step" # nop = 0x90
end
define ipxe_test_awatch
awatch watch_me
c
ipxe_assert $ecx 0x600d0000 "ipxe_test_awatch read"
if $ecx == 0x600d0000
c
end
c
ipxe_assert $ecx 0x600d0001 "ipxe_test_awatch write"
if $ecx == 0x600d0001
c
end
delete
end
define ipxe_test_watch
watch watch_me
c
ipxe_assert $ecx 0x600d0002 "ipxe_test_watch"
if $ecx == 0x600d0002
c
end
delete
end
ipxe_load_symbols
ipxe_start_tests
ipxe_test_regs_read
ipxe_test_regs_write
ipxe_test_mem_read
ipxe_test_mem_write
ipxe_test_step
ipxe_test_awatch
ipxe_test_watch