#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include "x86emu.h"#include "x86emu/prim_asm.h"Defines | |
| #define | true 1 |
| #define | false 0 |
| #define | ALL_FLAGS (F_CF | F_PF | F_AF | F_ZF | F_SF | F_OF) |
| #define | VAL_START_BINARY(parm_type, res_type, dmax, smax, dincr, sincr) |
| #define | VAL_TEST_BINARY(name) |
| #define | VAL_TEST_BINARY_VOID(name) |
| #define | VAL_FAIL_BYTE_BYTE_BINARY(name) |
| #define | VAL_FAIL_WORD_WORD_BINARY(name) |
| #define | VAL_FAIL_LONG_LONG_BINARY(name) |
| #define | VAL_END_BINARY() |
| #define | VAL_BYTE_BYTE_BINARY(name) |
| #define | VAL_WORD_WORD_BINARY(name) |
| #define | VAL_LONG_LONG_BINARY(name) |
| #define | VAL_VOID_BYTE_BINARY(name) |
| #define | VAL_VOID_WORD_BINARY(name) |
| #define | VAL_VOID_LONG_BINARY(name) |
| #define | VAL_BYTE_ROTATE(name) |
| #define | VAL_WORD_ROTATE(name) |
| #define | VAL_LONG_ROTATE(name) |
| #define | VAL_START_TERNARY(parm_type, res_type, dmax, smax, dincr, sincr, maxshift) |
| #define | VAL_TEST_TERNARY(name) |
| #define | VAL_FAIL_WORD_WORD_TERNARY(name) |
| #define | VAL_FAIL_LONG_LONG_TERNARY(name) |
| #define | VAL_END_TERNARY() |
| #define | VAL_WORD_ROTATE_DBL(name) |
| #define | VAL_LONG_ROTATE_DBL(name) |
| #define | VAL_START_UNARY(parm_type, max, incr) |
| #define | VAL_TEST_UNARY(name) |
| #define | VAL_FAIL_BYTE_UNARY(name) |
| #define | VAL_FAIL_WORD_UNARY(name) |
| #define | VAL_FAIL_LONG_UNARY(name) |
| #define | VAL_END_UNARY() |
| #define | VAL_BYTE_UNARY(name) |
| #define | VAL_WORD_UNARY(name) |
| #define | VAL_WORD_BYTE_UNARY(name) |
| #define | VAL_LONG_UNARY(name) |
| #define | VAL_BYTE_MUL(name) |
| #define | VAL_WORD_MUL(name) |
| #define | VAL_LONG_MUL(name) |
| #define | VAL_BYTE_DIV(name) |
| #define | VAL_WORD_DIV(name) |
| #define | VAL_LONG_DIV(name) |
Functions | |
| void | printk (const char *fmt,...) |
| char * | print_flags (char *buf, ulong flags) |
| int | main (int argc) |
|
|
|
|
|
|
|
|
|
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u8,u8,0xFF,0xFF,1,1) \ VAL_TEST_BINARY(name) \ VAL_FAIL_BYTE_BYTE_BINARY(name) \ VAL_END_BINARY() |
|
|
|
|
|
|
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u8,u8,0xFF,8,1,1) \ VAL_TEST_BINARY(name) \ VAL_FAIL_BYTE_BYTE_BINARY(name) \ VAL_END_BINARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_UNARY(u8,0xFF,0x1) \ VAL_TEST_UNARY(name) \ VAL_FAIL_BYTE_UNARY(name) \ VAL_END_UNARY() |
|
|
Value: |
|
|
Value: |
|
|
Value: |
|
|
Value: if (failed) \ printk("fail\n"); \ printk("0x%02X = %-15s(0x%02X,0x%02X), flags = %s -> %s\n", \ r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%02X = %-15s(0x%02X,0x%02X), flags = %s -> %s\n", \ r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: printk("fail\n"); \ printk("0x%02X = %-15s(0x%02X), flags = %s -> %s\n", \ r, #name, d, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%02X = %-15s(0x%02X), flags = %s -> %s\n", \ r_asm, #name"_asm", d, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: if (failed) \ printk("fail\n"); \ printk("0x%08X = %-15s(0x%08X,0x%08X), flags = %s -> %s\n", \ r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%08X = %-15s(0x%08X,0x%08X), flags = %s -> %s\n", \ r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: if (failed) \ printk("fail\n"); \ printk("0x%08X = %-15s(0x%08X,0x%08X,%d), flags = %s -> %s\n", \ r, #name, d, s, shift, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%08X = %-15s(0x%08X,0x%08X,%d), flags = %s -> %s\n", \ r_asm, #name"_asm", d, s, shift, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: printk("fail\n"); \ printk("0x%08X = %-15s(0x%08X), flags = %s -> %s\n", \ r, #name, d, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%08X = %-15s(0x%08X), flags = %s -> %s\n", \ r_asm, #name"_asm", d, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: printk("fail\n"); \ printk("0x%04X = %-15s(0x%04X), flags = %s -> %s\n", \ r, #name, d, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%04X = %-15s(0x%04X), flags = %s -> %s\n", \ r_asm, #name"_asm", d, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: if (failed) \ printk("fail\n"); \ printk("0x%04X = %-15s(0x%04X,0x%04X), flags = %s -> %s\n", \ r, #name, d, s, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%04X = %-15s(0x%04X,0x%04X), flags = %s -> %s\n", \ r_asm, #name"_asm", d, s, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
Value: if (failed) \ printk("fail\n"); \ printk("0x%04X = %-15s(0x%04X,0x%04X,%d), flags = %s -> %s\n", \ r, #name, d, s, shift, print_flags(buf1,inflags), print_flags(buf2,M.x86.R_EFLG)); \ printk("0x%04X = %-15s(0x%04X,0x%04X,%d), flags = %s -> %s\n", \ r_asm, #name"_asm", d, s, shift, print_flags(buf1,inflags), print_flags(buf2,flags)); |
|
|
|
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u32,u32,0xFF000000,0xFF000000,0x1000000,0x1000000) \ VAL_TEST_BINARY(name) \ VAL_FAIL_LONG_LONG_BINARY(name) \ VAL_END_BINARY() |
|
|
|
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u32,u32,0xFF000000,32,0x1000000,1) \ VAL_TEST_BINARY(name) \ VAL_FAIL_LONG_LONG_BINARY(name) \ VAL_END_BINARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_TERNARY(u32,u32,0xFF000000,0xFF000000,0x1000000,0x1000000,32) \ VAL_TEST_TERNARY(name) \ VAL_FAIL_LONG_LONG_TERNARY(name) \ VAL_END_TERNARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_UNARY(u32,0xFF000000,0x1000000) \ VAL_TEST_UNARY(name) \ VAL_FAIL_LONG_UNARY(name) \ VAL_END_UNARY() |
|
|
Value: { \
parm_type d,s; \
res_type r,r_asm; \
ulong flags,inflags; \
int f,failed = false; \
char buf1[80],buf2[80]; \
for (d = 0; d < dmax; d += dincr) { \
for (s = 0; s < smax; s += sincr) { \
M.x86.R_EFLG = inflags = flags = def_flags; \
for (f = 0; f < 2; f++) {
|
|
|
Value: { \
parm_type d,s; \
res_type r,r_asm; \
u8 shift; \
u32 flags,inflags; \
int f,failed = false; \
char buf1[80],buf2[80]; \
for (d = 0; d < dmax; d += dincr) { \
for (s = 0; s < smax; s += sincr) { \
for (shift = 0; shift < maxshift; shift += 1) { \
M.x86.R_EFLG = inflags = flags = def_flags; \
for (f = 0; f < 2; f++) {
|
|
|
Value: |
|
|
Value: r_asm = name##_asm(&flags,d,s); \
r = name(d,s); \
if (r != r_asm || M.x86.R_EFLG != flags) \
failed = true; \
if (failed || trace) {
|
|
|
Value: name##_asm(&flags,d,s); \
name(d,s); \
r = r_asm = 0; \
if (M.x86.R_EFLG != flags) \
failed = true; \
if (failed || trace) {
|
|
|
Value: r_asm = name##_asm(&flags,d,s,shift); \
r = name(d,s,shift); \
if (r != r_asm || M.x86.R_EFLG != flags) \
failed = true; \
if (failed || trace) {
|
|
|
Value: r_asm = name##_asm(&flags,d); \
r = name(d); \
if (r != r_asm || M.x86.R_EFLG != flags) { \
failed = true;
|
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u8,u8,0xFF,0xFF,1,1) \ VAL_TEST_BINARY_VOID(name) \ VAL_FAIL_BYTE_BYTE_BINARY(name) \ VAL_END_BINARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u32,u32,0xFF000000,0xFF000000,0x1000000,0x1000000) \ VAL_TEST_BINARY_VOID(name) \ VAL_FAIL_LONG_LONG_BINARY(name) \ VAL_END_BINARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u16,u16,0xFF00,0xFF00,0x100,0x100) \ VAL_TEST_BINARY_VOID(name) \ VAL_FAIL_WORD_WORD_BINARY(name) \ VAL_END_BINARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_UNARY(u16,0xFF,0x1) \ VAL_TEST_UNARY(name) \ VAL_FAIL_WORD_UNARY(name) \ VAL_END_UNARY() |
|
|
|
|
|
|
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u16,u16,0xFF00,16,0x100,1) \ VAL_TEST_BINARY(name) \ VAL_FAIL_WORD_WORD_BINARY(name) \ VAL_END_BINARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_TERNARY(u16,u16,0xFF00,0xFF00,0x100,0x100,16) \ VAL_TEST_TERNARY(name) \ VAL_FAIL_WORD_WORD_TERNARY(name) \ VAL_END_TERNARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_UNARY(u16,0xFF00,0x100) \ VAL_TEST_UNARY(name) \ VAL_FAIL_WORD_UNARY(name) \ VAL_END_UNARY() |
|
|
Value: printk("Validating %s ... ", #name); \ VAL_START_BINARY(u16,u16,0xFF00,0xFF00,0x100,0x100) \ VAL_TEST_BINARY(name) \ VAL_FAIL_WORD_WORD_BINARY(name) \ VAL_END_BINARY() |
|
|
|
|
||||||||||||
|
|
|
||||||||||||
|
|