libhd  5.0
Macros | Functions
validate.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "x86emu.h"
#include "x86emu/prim_asm.h"

Macros

#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)

Macro Definition Documentation

#define ALL_FLAGS   (F_CF | F_PF | F_AF | F_ZF | F_SF | F_OF)

Referenced by main().

#define false   0
#define true   1
#define VAL_BYTE_BYTE_BINARY (   name)
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()

Referenced by main().

#define VAL_BYTE_DIV (   name)

Referenced by main().

#define VAL_BYTE_MUL (   name)

Referenced by main().

#define VAL_BYTE_ROTATE (   name)
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()

Referenced by main().

#define VAL_BYTE_UNARY (   name)
Value:
printk("Validating %s ... ", #name); \
VAL_START_UNARY(u8,0xFF,0x1) \
VAL_TEST_UNARY(name) \
VAL_FAIL_BYTE_UNARY(name) \
VAL_END_UNARY()

Referenced by main().

#define VAL_END_BINARY ( )
Value:
} \
M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \
if (failed) \
break; \
} \
if (failed) \
break; \
} \
if (failed) \
break; \
} \
if (!failed) \
printk("passed\n"); \
}
#define VAL_END_TERNARY ( )
Value:
} \
M.x86.R_EFLG = inflags = flags = def_flags | (ALL_FLAGS & ~F_OF); \
if (failed) \
break; \
} \
if (failed) \
break; \
} \
if (failed) \
break; \
} \
if (failed) \
break; \
} \
if (!failed) \
printk("passed\n"); \
}
#define VAL_END_UNARY ( )
Value:
} \
M.x86.R_EFLG = inflags = flags = def_flags | ALL_FLAGS; \
if (failed) \
break; \
} \
if (failed) \
break; \
} \
if (!failed) \
printk("passed\n"); \
}
#define VAL_FAIL_BYTE_BYTE_BINARY (   name)
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));
#define VAL_FAIL_BYTE_UNARY (   name)
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));
#define VAL_FAIL_LONG_LONG_BINARY (   name)
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));
#define VAL_FAIL_LONG_LONG_TERNARY (   name)
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));
#define VAL_FAIL_LONG_UNARY (   name)
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));
#define VAL_FAIL_WORD_UNARY (   name)
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));
#define VAL_FAIL_WORD_WORD_BINARY (   name)
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));
#define VAL_FAIL_WORD_WORD_TERNARY (   name)
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));
#define VAL_LONG_DIV (   name)

Referenced by main().

#define VAL_LONG_LONG_BINARY (   name)
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()

Referenced by main().

#define VAL_LONG_MUL (   name)

Referenced by main().

#define VAL_LONG_ROTATE (   name)
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()

Referenced by main().

#define VAL_LONG_ROTATE_DBL (   name)
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()

Referenced by main().

#define VAL_LONG_UNARY (   name)
Value:
printk("Validating %s ... ", #name); \
VAL_START_UNARY(u32,0xFF000000,0x1000000) \
VAL_TEST_UNARY(name) \
VAL_FAIL_LONG_UNARY(name) \
VAL_END_UNARY()

Referenced by main().

#define VAL_START_BINARY (   parm_type,
  res_type,
  dmax,
  smax,
  dincr,
  sincr 
)
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++) {
#define VAL_START_TERNARY (   parm_type,
  res_type,
  dmax,
  smax,
  dincr,
  sincr,
  maxshift 
)
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++) {
#define VAL_START_UNARY (   parm_type,
  max,
  incr 
)
Value:
{ \
parm_type d,r,r_asm; \
u32 flags,inflags; \
int f,failed = false; \
char buf1[80],buf2[80]; \
for (d = 0; d < max; d += incr) { \
M.x86.R_EFLG = inflags = flags = def_flags; \
for (f = 0; f < 2; f++) {
#define VAL_TEST_BINARY (   name)
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) {
#define VAL_TEST_BINARY_VOID (   name)
Value:
name##_asm(&flags,d,s); \
name(d,s); \
r = r_asm = 0; \
if (M.x86.R_EFLG != flags) \
failed = true; \
if (failed || trace) {
#define VAL_TEST_TERNARY (   name)
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) {
#define VAL_TEST_UNARY (   name)
Value:
r_asm = name##_asm(&flags,d); \
r = name(d); \
if (r != r_asm || M.x86.R_EFLG != flags) { \
failed = true;
#define VAL_VOID_BYTE_BINARY (   name)
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()

Referenced by main().

#define VAL_VOID_LONG_BINARY (   name)
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()

Referenced by main().

#define VAL_VOID_WORD_BINARY (   name)
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()

Referenced by main().

#define VAL_WORD_BYTE_UNARY (   name)
Value:
printk("Validating %s ... ", #name); \
VAL_START_UNARY(u16,0xFF,0x1) \
VAL_TEST_UNARY(name) \
VAL_FAIL_WORD_UNARY(name) \
VAL_END_UNARY()
#define VAL_WORD_DIV (   name)

Referenced by main().

#define VAL_WORD_MUL (   name)

Referenced by main().

#define VAL_WORD_ROTATE (   name)
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()

Referenced by main().

#define VAL_WORD_ROTATE_DBL (   name)
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()

Referenced by main().

#define VAL_WORD_UNARY (   name)
Value:
printk("Validating %s ... ", #name); \
VAL_START_UNARY(u16,0xFF00,0x100) \
VAL_TEST_UNARY(name) \
VAL_FAIL_WORD_UNARY(name) \
VAL_END_UNARY()

Referenced by main().

#define VAL_WORD_WORD_BINARY (   name)
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()

Referenced by main().

Function Documentation

int main ( int  argc)
char* print_flags ( char *  buf,
ulong  flags 
)

References F_AF, F_CF, F_OF, F_PF, F_SF, and F_ZF.

void printk ( const char *  fmt,
  ... 
)