diff options
Diffstat (limited to 'memtestEDK/Memtest/SingleComponents/test.h')
-rw-r--r-- | memtestEDK/Memtest/SingleComponents/test.h | 346 |
1 files changed, 0 insertions, 346 deletions
diff --git a/memtestEDK/Memtest/SingleComponents/test.h b/memtestEDK/Memtest/SingleComponents/test.h deleted file mode 100644 index 8b2e924..0000000 --- a/memtestEDK/Memtest/SingleComponents/test.h +++ /dev/null @@ -1,346 +0,0 @@ -/* test.h - MemTest-86 Version 3.4 - * - * Released under version 2 of the Gnu Public License. - * By Chris Brady - */ - -#ifndef _TEST_H_ -#define _TEST_H_ -#define E88 0x00 -#define E801 0x04 -#define E820NR 0x08 /* # entries in E820MAP */ -#define E820MAP 0x0c /* our map */ -#define E820MAX 127 /* number of entries in E820MAP */ -#define E820ENTRY_SIZE 20 -#define MEMINFO_SIZE (E820MAP + E820MAX * E820ENTRY_SIZE) - -#ifndef __ASSEMBLY__ - -#define E820_RAM 1 -#define E820_RESERVED 2 -#define E820_ACPI 3 /* usable as RAM once ACPI tables have been read */ -#define E820_NVS 4 - -struct e820entry { - unsigned long long addr; /* start of memory segment */ - unsigned long long size; /* size of memory segment */ - unsigned long type; /* type of memory segment */ -}; - -struct mem_info_t { - unsigned long e88_mem_k; /* 0x00 */ - unsigned long e801_mem_k; /* 0x04 */ - unsigned long e820_nr; /* 0x08 */ - struct e820entry e820[E820MAX]; /* 0x0c */ - /* 0x28c */ -}; - -typedef unsigned long ulong; -#define STACKSIZE_BYTES (8*1024) -#define MAX_MEM_PAGES 0x7FF00000 /* 8 TB; units are 4K pages */ -#define WIN_SZ_PAGES 0x80000 /* 2 GB; units are 4K pages */ -#define UNMAP_SZ_PAGES (0x100000-WIN_SZ_PAGES) /* Size of unmapped first segment */ - -#define SPINSZ_DWORDS 0x4000000 /* 256 MB; units are dwords (32-bit words) */ -#define MOD_SZ 20 -#define BAILOUT if (bail) return(1); -#define BAILR if (bail) return; - -#define RES_START 0xa0000 -#define RES_END 0x100000 -#define SCREEN_ADR 0xb8000 -#define SCREEN_END_ADR (SCREEN_ADR + 80*25*2) - -#define DMI_SEARCH_START 0x0000F000 -#define DMI_SEARCH_LENGTH 0x000F0FFF -#define MAX_DMI_MEMDEVS 16 - -#define TITLE_WIDTH 28 -#define LINE_TITLE 0 -#define LINE_TST 3 -#define LINE_RANGE 4 -#define LINE_PAT 5 -#define LINE_TIME 5 -#define LINE_STATUS 8 -#define LINE_INFO 9 -#define LINE_HEADER 12 -#define LINE_SCROLL 14 -#define LINE_SPD 14 -#define LINE_MSG 22 -#define LINE_CPU 7 -#define LINE_RAM 8 -#define LINE_DMI 23 -#define COL_INF1 15 -#define COL_INF2 32 -#define COL_INF3 51 -#define COL_INF4 70 -#define COL_MODE 15 -#define COL_MID 30 -#define COL_PAT 41 -#define BAR_SIZE (78-COL_MID-9) -#define COL_MSG 23 -#define COL_TIME 67 -#define COL_SPEC 41 - -#define POP_W 34 -#define POP_H 15 -#define POP_X 11 -#define POP_Y 8 -#define POP2_W 74 -#define POP2_H 21 -#define POP2_X 3 -#define POP2_Y 2 - -/* CPU mode types */ -#define CPM_ALL 1 -#define CPM_RROBIN 2 -#define CPM_SEQ 3 - -/* memspeed operations */ -#define MS_COPY 1 -#define MS_WRITE 2 -#define MS_READ 3 - -#define SZ_MODE_BIOS 1 -#define SZ_MODE_PROBE 2 - -#define getCx86(reg) ({ outb((reg), 0x22); inb(0x23); }) - -int mt86_memcmp(const void *s1, const void *s2, ulong count); -void *mt86_memmove(void *dest, const void *src, ulong n); -int mt86_strncmp(const char *s1, const char *s2, ulong n); -int mt86_strstr(char *str1, char *str2); -int mt86_strlen(char *string); -int query_linuxbios(void); -int query_pcbios(void); -int insertaddress(ulong); -void printpatn(void); -void printpatn(void); -void itoa(char s[], int n); -void reverse(char *p); -void serial_console_setup(char *param); -void serial_echo_init(void); -void serial_echo_print(const char *s); -void ttyprint(int y, int x, const char *s); -void ttyprintc(int y, int x, char c); -void cprint(int y,int x, const char *s); -void cplace(int y,int x, const char s); -void hprint(int y,int x, ulong val); -void hprint2(int y,int x, ulong val, int len); -void hprint3(int y,int x, ulong val, int len); -void xprint(int y,int x,ulong val); -void aprint(int y,int x,ulong page); -void dprint(int y,int x,ulong val,int len, int right); -void movinv1(int iter, ulong p1, ulong p2, int cpu); -void movinvr(int cpu); -void movinv32(int iter, ulong p1, ulong lb, ulong mb, int sval, int off, - int cpu); -void modtst(int off, int iter, ulong p1, ulong p2, int cpu); -#define ASSERT(n) do { \ - if (!(n)) { \ - assert_fail(__FILE__, __LINE__); \ - } } while(0) -void assert_fail(const char* file, int line_no); -void mt86_error(ulong* adr, ulong good, ulong bad); -void ad_err1(ulong *adr1, ulong *adr2, ulong good, ulong bad); -void ad_err2(ulong *adr, ulong bad); -void do_tick(); -void init(void); -struct eregs; -void inter(struct eregs *trap_regs); -void set_cache(int val); -void check_input(void); -void footer(void); -void scroll(void); -void clear_scroll(void); -void popup(void); -void popdown(void); -void popclear(void); -void pop2up(void); -void pop2down(void); -void pop2clear(void); -void get_config(void); -void get_menu(void); -void get_printmode(void); -void addr_tst1(int cpu); -void addr_tst2(int cpu); -int getnum(ulong val); -void sleep(long sec, int flag, int cpu, int sms); -void block_move(int iter, int cpu); -void find_ticks(void); -void print_err(ulong *adr, ulong good, ulong bad, ulong xor); -void print_ecc_err(ulong page, ulong offset, int corrected, - unsigned short syndrome, int channel); -void mem_size(void); -void adj_mem(void); -ulong getval(int x, int y, int result_shift); -int get_key(void); -int ascii_to_keycode(int in); -void wait_keyup(void); -void print_hdr(void); -void restart(void); -void parity_err(ulong edi, ulong esi); -void start_config(void); -void clear_screen(void); -void paging_off(void); -void show_spd(void); -int map_page(unsigned long page); -void *mapping(unsigned long phys_page); // get VA for a physical page -void *emapping(unsigned long phys_page); -int mt86_isdigit(char c); -ulong memspeed(ulong src, ulong len, int iter); -unsigned long page_of(void *ptr); -ulong correct_tsc(ulong el_org); -void bit_fade_fill(unsigned long n, int cpu); -void bit_fade_chk(unsigned long n, int cpu); -void find_ticks_for_pass(void); -void beep(unsigned int frequency); - -// Expose foreach_segment here for self_test, otherwise -// it would be local to test.c: -typedef void(*segment_fn)(ulong* start, // start address - ulong len_dw, // length of segment in dwords - const void* ctx); // any context data needed -void foreach_segment(ulong* start, ulong* end, - int me, const void* ctx, segment_fn func); - - -// In self-test, DEBUGF wraps libc's printf. -// In memtest standalone, printf will be a stub -// and 'vv->debugging' is false to avoid call overhead. -int printf(const char *format, ...); -#define DEBUGF(...) { \ - if (vv->debugging) { \ - printf(__VA_ARGS__); \ - } \ - } - -#define PRINTMODE_SUMMARY 0 -#define PRINTMODE_ADDRESSES 1 -#define PRINTMODE_PATTERNS 2 -#define PRINTMODE_NONE 3 - -#define BADRAM_MAXPATNS 10 - -struct pair { - ulong adr; - ulong mask; -}; - -static inline void cache_off(void) -{ - asm( - "push %eax\n\t" - "movl %cr0,%eax\n\t" - "orl $0x40000000,%eax\n\t" /* Set CD */ - "movl %eax,%cr0\n\t" - "wbinvd\n\t" - "pop %eax\n\t"); -} - -static inline void cache_on(void) -{ - asm( - "push %eax\n\t" - "movl %cr0,%eax\n\t" - "andl $0x9fffffff,%eax\n\t" /* Clear CD and NW */ - "movl %eax,%cr0\n\t" - "pop %eax\n\t"); -} - -struct mmap { - ulong pbase_addr; - ulong *start; // VA of segment start - ulong *end; // VA of the last dword within the segment. -}; - -struct pmap { - ulong start; /* phys page number of RAM segment start, - in 4K pages. */ - ulong end; // phys page number (past the end? or inclusive?) -}; - -struct tseq { - short sel; // enabled - short cpu_sel; // cpu_sel == 0 indicates end of tseq[] array - short pat; // the test # - short iter; // # of iterations to run - short errors; // error count, updated as tests run - char *msg; -}; - -struct xadr { - ulong page; - ulong offset; -}; - -struct err_info { - struct xadr low_addr; - struct xadr high_addr; - unsigned long ebits; - long tbits; - short min_bits; - short max_bits; - unsigned long maxl; - unsigned long eadr; - unsigned long exor; - unsigned long cor_err; - short hdr_flag; -}; - - - -#define X86_FEATURE_PAE (0*32+ 6) /* Physical Address Extensions */ - -#define MAX_MEM_SEGMENTS E820MAX - -/* Define common variables across relocations of memtest86 */ -struct vars { - int pass; - int msg_line; - int ecount; - int ecc_ecount; - int msegs; // number of entries in pmap[] - int testsel; - int scroll_start; - int pass_ticks; - int total_ticks; - int pptr; - int tptr; - struct err_info erri; - // PA ranges from e820 table: - struct pmap pmap[MAX_MEM_SEGMENTS]; - // VA mappings: - volatile struct mmap map[MAX_MEM_SEGMENTS]; - ulong plim_lower; // phys page number - ulong plim_upper; // phys page number - ulong clks_msec; - ulong starth; - ulong startl; - ulong snaph; - ulong snapl; - int printmode; - int numpatn; - struct pair patn [BADRAM_MAXPATNS]; - ulong test_pages; - ulong selected_pages; - ulong reserved_pages; - int check_temp; - int fail_safe; - int each_sec; - int beepmode; - int debugging; // Set in selftest only -}; - -#define FIRMWARE_UNKNOWN 0 -#define FIRMWARE_PCBIOS 1 -#define FIRMWARE_LINUXBIOS 2 - -extern struct vars * const vv; -extern unsigned char _start[], _end[], startup_32[]; -extern unsigned char _size, _pages; - -extern struct mem_info_t mem_info; - -#endif /* __ASSEMBLY__ */ -#endif /* _TEST_H_ */ |