summaryrefslogtreecommitdiffstats
path: root/test.h
diff options
context:
space:
mode:
Diffstat (limited to 'test.h')
-rw-r--r--test.h231
1 files changed, 91 insertions, 140 deletions
diff --git a/test.h b/test.h
index 294c297..862da15 100644
--- a/test.h
+++ b/test.h
@@ -1,11 +1,7 @@
-/* test.h - MemTest-86 Version 3.2
+/* test.h - MemTest-86 Version 3.4
*
* Released under version 2 of the Gnu Public License.
* By Chris Brady
- * ----------------------------------------------------
- * MemTest86+ V2.00 Specific code (GPL V2.0)
- * By Samuel DEMEULEMEESTER, sdemeule@memtest.org
- * http://www.canardpc.com - http://www.memtest.org
*/
#ifndef _TEST_H_
@@ -14,10 +10,9 @@
#define E801 0x04
#define E820NR 0x08 /* # entries in E820MAP */
#define E820MAP 0x0c /* our map */
-#define E820MAX 64 /* number of entries in E820MAP */
+#define E820MAX 127 /* number of entries in E820MAP */
#define E820ENTRY_SIZE 20
#define MEMINFO_SIZE (E820MAP + E820MAX * E820ENTRY_SIZE)
-#define MAX_DMI_MEMDEVS 16
#ifndef __ASSEMBLY__
@@ -41,55 +36,65 @@ struct mem_info_t {
};
typedef unsigned long ulong;
-#define SPINSZ 0x2000000
+#define STACKSIZE (8*1024)
+#define MAX_MEM 0x7FF00000 /* 8 TB */
+#define WIN_SZ 0x80000 /* 2 GB */
+#define UNMAP_SZ (0x100000-WIN_SZ) /* Size of umappped first segment */
+
+#define SPINSZ 0x4000000 /* 256 MB */
#define MOD_SZ 20
-#define BAILOUT if (bail) goto skip_test;
+#define BAILOUT if (bail) return(1);
#define BAILR if (bail) return;
-#define NULL 0
-
-#define DMI_SEARCH_START 0x0000F000
-#define DMI_SEARCH_LENGTH 0x000F0FFF
-#define MAX_DMI_MEMDEVS 16
#define RES_START 0xa0000
#define RES_END 0x100000
#define SCREEN_ADR 0xb8000
#define SCREEN_END_ADR (SCREEN_ADR + 80*25*2)
-#define TITLE_WIDTH 28
-#define LINE_TIME 11
-#define COL_TIME 0
-#define LINE_TST 2
-#define LINE_RANGE 3
-#define LINE_CPU 1
+#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 LINE_PAT 4
#define COL_PAT 41
-#define LINE_INFO 11
-#define COL_CACHE_TOP 13
-#define COL_RESERVED 22
-#define COL_MMAP 29
-#define COL_CACHE 40
-#define COL_ECC 46
-#define COL_TST 51
-#define COL_PASS 56
-#define COL_ERR 63
-#define COL_ECC_ERR 72
-#define LINE_HEADER 13
-#define LINE_SCROLL 15
#define BAR_SIZE (78-COL_MID-9)
-#define LINE_MSG 18
-#define COL_MSG 18
+#define COL_MSG 23
+#define COL_TIME 67
+#define COL_SPEC 41
-#define POP_W 30
+#define POP_W 34
#define POP_H 15
-#define POP_X 16
+#define POP_X 11
#define POP_Y 8
-#define POP2_W 74
-#define POP2_H 21
-#define POP2_X 3
-#define POP2_Y 2
-//#define NULL 0
+#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
@@ -97,19 +102,21 @@ typedef unsigned long ulong;
#define MS_READ 3
#define SZ_MODE_BIOS 1
-#define SZ_MODE_BIOS_RES 2
-#define SZ_MODE_PROBE 3
+#define SZ_MODE_PROBE 2
#define getCx86(reg) ({ outb((reg), 0x22); inb(0x23); })
+
int memcmp(const void *s1, const void *s2, ulong count);
-int strncmp(const char *s1, const char *s2, ulong n);
void *memmove(void *dest, const void *src, ulong n);
+int strncmp(const char *s1, const char *s2, ulong n);
+int strstr(char *str1, char *str2);
+int 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 itoa(char s[], int n);
void reverse(char *p);
void serial_console_setup(char *param);
void serial_echo_init(void);
@@ -117,22 +124,22 @@ 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 hprint(int y,int x,ulong val);
+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);
-void movinvr();
-void movinv32(int iter, ulong p1, ulong lb, ulong mb, int sval, int off);
-void modtst(int off, int iter, ulong p1, ulong p2);
+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);
void 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);
-void rand_seed(int seed1, int seed2);
-ulong rand();
+void do_tick();
void init(void);
struct eregs;
void inter(struct eregs *trap_regs);
@@ -150,16 +157,14 @@ void pop2clear(void);
void get_config(void);
void get_menu(void);
void get_printmode(void);
-void addr_tst1(void);
-void addr_tst2(void);
-void bit_fade(void);
-void sleep(int sec, int sms);
-void beep(unsigned int frequency);
+void addr_tst1(int cpu);
+void addr_tst2(int cpu);
int getnum(ulong val);
-void block_move(int iter);
+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,
+void print_ecc_err(ulong page, ulong offset, int corrected,
unsigned short syndrome, int channel);
void mem_size(void);
void adj_mem(void);
@@ -177,15 +182,19 @@ void show_spd(void);
int map_page(unsigned long page);
void *mapping(unsigned long page_address);
void *emapping(unsigned long page_address);
+int isdigit(char c);
+ulong memspeed(ulong src, ulong len, int iter);
unsigned long page_of(void *ptr);
-ulong memspeed(ulong src, ulong len, int iter, int type);
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);
-#define PRINTMODE_SUMMARY 1
-#define PRINTMODE_ADDRESSES 0
+#define PRINTMODE_SUMMARY 0
+#define PRINTMODE_ADDRESSES 1
#define PRINTMODE_PATTERNS 2
#define PRINTMODE_NONE 3
-#define PRINTMODE_DMI 4
#define BADRAM_MAXPATNS 10
@@ -194,50 +203,27 @@ struct pair {
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"
+ "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"
+ "andl $0x9fffffff,%eax\n\t" /* Clear CD and NW */
+ "movl %eax,%cr0\n\t"
"pop %eax\n\t");
}
-static inline void reboot(void)
-{
- asm(
- "movl %cr0,%eax\n\t"
- "andl $0x00000011,%eax\n\t"
- "orl $0x60000000,%eax\n\t"
- "movl %eax,%cr0\n\t"
- "movl %eax,%cr3\n\t"
- "movl %cr0,%ebx\n\t"
- "andl $0x60000000,%ebx\n\t"
- "jz f\n\t"
- ".byte 0x0f,0x09\n\t" /* Invalidate and flush cache */
- "f: andb $0x10,%al\n\t"
- "movl %eax,%cr0\n\t"
- "movw $0x0010,%ax\n\t"
- "movw %ax,%ds\n\t"
- "movw %ax,%es\n\t"
- "movw %ax,%fs\n\t"
- "movw %ax,%gs\n\t"
- "movw %ax,%ss\n\t"
- "ljmp $0xffff,$0x0000\n\t");
-}
-
struct mmap {
ulong pbase_addr;
ulong *start;
@@ -250,43 +236,14 @@ struct pmap {
};
struct tseq {
- short cache;
+ short sel;
+ short cpu_sel;
short pat;
short iter;
short errors;
char *msg;
};
-struct cpu_ident {
- char type;
- char model;
- char step;
- char fill;
- long cpuid;
- long capability;
- char vend_id[12];
- unsigned char cache_info[16];
- long pwrcap;
- long ext;
- long feature_flag;
- long dcache0_eax;
- long dcache0_ebx;
- long dcache0_ecx;
- long dcache0_edx;
- long dcache1_eax;
- long dcache1_ebx;
- long dcache1_ecx;
- long dcache1_edx;
- long dcache2_eax;
- long dcache2_ebx;
- long dcache2_ecx;
- long dcache2_edx;
- long dcache3_eax;
- long dcache3_ebx;
- long dcache3_ecx;
- long dcache3_edx;
-};
-
struct xadr {
ulong page;
ulong offset;
@@ -306,31 +263,28 @@ struct err_info {
short hdr_flag;
};
+
+
#define X86_FEATURE_PAE (0*32+ 6) /* Physical Address Extensions */
+
#define MAX_MEM_SEGMENTS E820MAX
-/* Define common variables accross relocations of memtest86+ */
+/* Define common variables accross relocations of memtest86 */
struct vars {
- volatile int test;
int pass;
- unsigned long *eadr;
- unsigned long exor;
int msg_line;
int ecount;
int ecc_ecount;
int msegs;
int testsel;
int scroll_start;
- int rdtsc;
- int pae;
int pass_ticks;
int total_ticks;
int pptr;
int tptr;
- int beepmode;
struct err_info erri;
struct pmap pmap[MAX_MEM_SEGMENTS];
- struct mmap map[MAX_MEM_SEGMENTS];
+ volatile struct mmap map[MAX_MEM_SEGMENTS];
ulong plim_lower;
ulong plim_upper;
ulong clks_msec;
@@ -338,14 +292,16 @@ struct vars {
ulong startl;
ulong snaph;
ulong snapl;
- ulong extclock;
- unsigned long imc_type;
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;
};
#define FIRMWARE_UNKNOWN 0
@@ -358,10 +314,5 @@ extern unsigned char _size, _pages;
extern struct mem_info_t mem_info;
-/* CPU mode types */
-#define CPM_SINGLE 1
-#define CPM_RROBIN 2
-#define CPM_SEQ 3
-
#endif /* __ASSEMBLY__ */
-#endif /* _TEST_H_ */ \ No newline at end of file
+#endif /* _TEST_H_ */