diff options
Diffstat (limited to 'memtestEDK/Memtest/SingleComponents/config.c')
-rw-r--r-- | memtestEDK/Memtest/SingleComponents/config.c | 537 |
1 files changed, 0 insertions, 537 deletions
diff --git a/memtestEDK/Memtest/SingleComponents/config.c b/memtestEDK/Memtest/SingleComponents/config.c deleted file mode 100644 index 47c2b71..0000000 --- a/memtestEDK/Memtest/SingleComponents/config.c +++ /dev/null @@ -1,537 +0,0 @@ -/* config.c - MemTest-86 Version 3.4 - * - * Released under version 2 of the Gnu Public License. - * By Chris Brady - * ---------------------------------------------------- - * MemTest86+ V5.00 Specific code (GPL V2.0) - * By Samuel DEMEULEMEESTER, sdemeule@memtest.org - * http://www.x86-secret.com - http://www.memtest.org - */ -#include "test.h" -#include "screen_buffer.h" -#include "dmi.h" -#include "environment.h" - - -#include <Library/UefiLib.h> - -extern int bail, beepmode; -extern struct tseq tseq[]; -extern short e820_nr; -void performance(); -extern volatile short cpu_mode; -extern volatile int test; -extern void find_chunks(); -extern volatile short start_seq; -extern short restart_flag; -extern short onepass; -extern short btflag; - -extern void get_list(int x, int y, int len, char *buf); - -char save[2][POP_H][POP_W]; -char save2[2][POP2_H][POP2_W]; - -void get_config() -{ - int flag = 0, sflag = 0, i, j, k, n, m, prt = 0; - int reprint_screen = 0; - char cp[64]; - ulong page; - - popup(); - wait_keyup(); - while(!flag) { - cprint(POP_Y+1, POP_X+2, "Settings:"); - cprint(POP_Y+3, POP_X+6, "(1) Test Selection"); - cprint(POP_Y+4, POP_X+6, "(2) Address Range"); - cprint(POP_Y+5, POP_X+6, "(3) Error Report Mode"); - cprint(POP_Y+6, POP_X+6, "(4) Core Selection"); - cprint(POP_Y+7, POP_X+6, "(5) Refresh Screen"); - cprint(POP_Y+8, POP_X+6, "(6) Display DMI Data"); - cprint(POP_Y+9, POP_X+6, "(7) Display SPD Data"); - cprint(POP_Y+11, POP_X+6, "(0) Continue"); - - /* Wait for key release */ - /* Fooey! This nuts'es up the serial input. */ - sflag = 0; - switch(get_key()) { - case 2: - /* 1 - Test Selection */ - popclear(); - cprint(POP_Y+1, POP_X+2, "Test Selection:"); - cprint(POP_Y+3, POP_X+6, "(1) Default Tests"); - cprint(POP_Y+4, POP_X+6, "(2) Skip Current Test"); - cprint(POP_Y+5, POP_X+6, "(3) Select Test"); - cprint(POP_Y+6, POP_X+6, "(4) Enter Test List"); - cprint(POP_Y+7, POP_X+6, "(0) Cancel"); - if (vv->testsel < 0) { - cprint(POP_Y+3, POP_X+5, ">"); - } else { - cprint(POP_Y+5, POP_X+5, ">"); - } - wait_keyup(); - while (!sflag) { - switch(get_key()) { - case 2: - /* Default - All tests */ - i = 0; - while (tseq[i].cpu_sel) { - tseq[i].sel = 1; - i++; - } - find_ticks_for_pass(); - sflag++; - break; - case 3: - /* Skip test */ - bail++; - sflag++; - break; - case 4: - /* Select test */ - popclear(); - cprint(POP_Y+1, POP_X+3, - "Test Selection:"); - cprint(POP_Y+4, POP_X+5, - "Test Number [1-11]: "); - n = getval(POP_Y+4, POP_X+24, 0) - 1; - if (n <= 11) - { - /* Deselect all tests */ - i = 0; - while (tseq[i].cpu_sel) { - tseq[i].sel = 0; - i++; - } - /* Now set the selection */ - tseq[n].sel = 1; - vv->pass = -1; - test = n; - find_ticks_for_pass(); - sflag++; - bail++; - } - break; - case 5: - /* Enter a test list */ - popclear(); - cprint(POP_Y+1, POP_X+3, - "Enter a comma separated list"); - cprint(POP_Y+2, POP_X+3, - "of tests to execute:"); - cprint(POP_Y+5, POP_X+5, "List: "); - /* Deselect all tests */ - k = 0; - while (tseq[k].cpu_sel) { - tseq[k].sel = 0; - k++; - } - - /* Get the list */ - for (i=0; i<64; i++) cp[i] = 0; - get_list(POP_Y+5, POP_X+10, 64, cp); - - /* Now enable all of the tests in the - * list */ - i = j = m = 0; - while (1) { - if (mt86_isdigit(cp[i])) { - n = cp[i]-'0'; - j = j*10 + n; - i++; - if (cp[i] == ',' || cp[i] == 0){ - if (j < k) { - tseq[j].sel = 1; - m++; - } - if (cp[i] == 0) break; - j = 0; - i++; - } - } - } - - /* If we didn't select at least one - * test turn them all back on */ - if (m == 0) { - k = 0; - while (tseq[k].cpu_sel) { - tseq[k].sel = 1; - k++; - } - } - vv->pass = -1; - test = n; - find_ticks_for_pass(); - sflag++; - bail++; - break; - case 11: - case 57: - sflag++; - break; - } - } - popclear(); - break; - case 3: - /* 2 - Address Range */ - popclear(); - cprint(POP_Y+1, POP_X+2, "Test Address Range:"); - cprint(POP_Y+3, POP_X+6, "(1) Set Lower Limit"); - cprint(POP_Y+4, POP_X+6, "(2) Set Upper Limit"); - cprint(POP_Y+5, POP_X+6, "(3) Test All Memory"); - cprint(POP_Y+6, POP_X+6, "(0) Cancel"); - wait_keyup(); - while (!sflag) { - switch(get_key()) { - case 2: - /* Lower Limit */ - popclear(); - cprint(POP_Y+2, POP_X+4, - "Lower Limit: "); - cprint(POP_Y+4, POP_X+4, - "Current: "); - aprint(POP_Y+4, POP_X+13, vv->plim_lower); - cprint(POP_Y+6, POP_X+4, - "New: "); - page = getval(POP_Y+6, POP_X+9, 12); - if (page + 1 <= vv->plim_upper) { - vv->plim_lower = page; - test--; - bail++; - } - adj_mem(); - find_chunks(); - find_ticks_for_pass(); - sflag++; - break; - case 3: - /* Upper Limit */ - popclear(); - cprint(POP_Y+2, POP_X+4, - "Upper Limit: "); - cprint(POP_Y+4, POP_X+4, - "Current: "); - aprint(POP_Y+4, POP_X+13, vv->plim_upper); - cprint(POP_Y+6, POP_X+4, - "New: "); - page = getval(POP_Y+6, POP_X+9, 12); - if (page - 1 >= vv->plim_lower) { - vv->plim_upper = page; - bail++; - test--; - } - adj_mem(); - find_chunks(); - find_ticks_for_pass(); - sflag++; - break; - case 4: - /* All of memory */ - vv->plim_lower = 0; - vv->plim_upper = - vv->pmap[vv->msegs - 1].end; - test--; - bail++; - adj_mem(); - find_chunks(); - find_ticks_for_pass(); - sflag++; - break; - case 11: - case 57: - /* 0/CR - Continue */ - sflag++; - break; - } - } - popclear(); - break; - case 4: - /* Error Mode */ - popclear(); - cprint(POP_Y+1, POP_X+2, "Printing Mode:"); - cprint(POP_Y+3, POP_X+6, "(1) Error Summary"); - cprint(POP_Y+4, POP_X+6, "(2) Individual Errors"); - cprint(POP_Y+5, POP_X+6, "(3) BadRAM Patterns"); - cprint(POP_Y+6, POP_X+6, "(4) Error Counts Only"); - cprint(POP_Y+7, POP_X+6, "(5) Beep on Error"); - cprint(POP_Y+8, POP_X+6, "(0) Cancel"); - cprint(POP_Y+3+vv->printmode, POP_X+5, ">"); - if (beepmode) { cprint(POP_Y+7, POP_X+5, ">"); } - wait_keyup(); - while (!sflag) { - switch(get_key()) { - case 2: - /* Error Summary */ - vv->printmode=PRINTMODE_SUMMARY; - vv->erri.eadr = 0; - vv->erri.hdr_flag = 0; - sflag++; - break; - case 3: - /* Separate Addresses */ - vv->printmode=PRINTMODE_ADDRESSES; - vv->erri.eadr = 0; - vv->erri.hdr_flag = 0; - vv->msg_line = LINE_SCROLL-1; - sflag++; - break; - case 4: - /* BadRAM Patterns */ - vv->printmode=PRINTMODE_PATTERNS; - vv->erri.hdr_flag = 0; - sflag++; - prt++; - break; - case 5: - /* Error Counts Only */ - vv->printmode=PRINTMODE_NONE; - vv->erri.hdr_flag = 0; - sflag++; - break; - case 6: - /* Set Beep On Error mode */ - beepmode = !beepmode; - sflag++; - break; - case 11: - case 57: - /* 0/CR - Continue */ - sflag++; - break; - } - } - popclear(); - break; - case 5: - /* CPU Mode */ - reprint_screen = 1; - popclear(); - cprint(POP_Y+1, POP_X+2, "CPU Selection Mode:"); - cprint(POP_Y+3, POP_X+6, "(1) Parallel (All)"); - cprint(POP_Y+4, POP_X+6, "(2) Round Robin (RRb)"); - cprint(POP_Y+5, POP_X+6, "(3) Sequential (Seq)"); - cprint(POP_Y+6, POP_X+6, "(0) Cancel"); - cprint(POP_Y+2+cpu_mode, POP_X+5, ">"); - wait_keyup(); - while(!sflag) { - switch(get_key()) { - case 2: - if (cpu_mode != CPM_ALL) bail++; - cpu_mode = CPM_ALL; - sflag++; - popdown(); - cprint(9,34,"All"); - popup(); - break; - case 3: - if (cpu_mode != CPM_RROBIN) bail++; - cpu_mode = CPM_RROBIN; - sflag++; - popdown(); - cprint(9,34,"RRb"); - popup(); - break; - case 4: - if (cpu_mode != CPM_SEQ) bail++; - cpu_mode = CPM_SEQ; - sflag++; - popdown(); - cprint(9,34,"Seq"); - popup(); - break; - case 11: - case 57: - /* 0/CR - Continue */ - sflag++; - break; - } - } - popclear(); - break; - case 6: - reprint_screen = 1; - flag++; - break; - case 7: - /* Display DMI Memory Info */ - pop2up(); - print_dmi_info(); - pop2down(); - break; - case 8: - /* Display SPD Data */ - popdown(); - show_spd(); - popup(); - sflag++; - break; - case 11: - case 57: - case 28: - /* 0/CR/SP - Continue */ - flag++; - break; - } - } - popdown(); - if (prt) { - printpatn(); - } - if (reprint_screen){ - tty_print_screen(); - } -} - -void popup() -{ - Print(L"start popup\n"); - int i, j; - char *pp; - - for (i=POP_Y; i<POP_Y + POP_H; i++) { - for (j=POP_X; j<POP_X + POP_W; j++) { - pp = (char *)(MAX_BLOCK_SIZE)(SCREEN_ADR + (i * 160) + (j * 2)); - save[0][i-POP_Y][j-POP_X] = *pp; /* Save screen */ - set_scrn_buf(i, j, ' '); - *pp = ' '; /* Clear */ - pp++; - save[1][i-POP_Y][j-POP_X] = *pp; - *pp = 0x07; /* Change Background to black */ - } - } - tty_print_region(POP_Y, POP_X, POP_Y+POP_H, POP_X+POP_W); - Print(L"end popup\n"); -} - -void popdown() -{ - int i, j; - char *pp; - - for (i=POP_Y; i<POP_Y + POP_H; i++) { - for (j=POP_X; j<POP_X + POP_W; j++) { - pp = (char *)(MAX_BLOCK_SIZE)(SCREEN_ADR + (i * 160) + (j * 2)); - *pp = save[0][i-POP_Y][j-POP_X]; /* Restore screen */ - set_scrn_buf(i, j, save[0][i-POP_Y][j-POP_X]); - pp++; - *pp = save[1][i-POP_Y][j-POP_X]; /* Restore color */ - } - } - tty_print_region(POP_Y, POP_X, POP_Y+POP_H, POP_X+POP_W); -} - -void popclear() -{ - int i, j; - char *pp; - - for (i=POP_Y; i<POP_Y + POP_H; i++) { - for (j=POP_X; j<POP_X + POP_W; j++) { - pp = (char *)(MAX_BLOCK_SIZE)(SCREEN_ADR + (i * 160) + (j * 2)); - *pp = ' '; /* Clear popup */ - set_scrn_buf(i, j, ' '); - pp++; - } - } - tty_print_region(POP_Y, POP_X, POP_Y+POP_H, POP_X+POP_W); -} - -void pop2up() -{ - int i, j; - char *pp; - - for (i=POP2_Y; i<POP2_Y + POP2_H; i++) { - for (j=POP2_X; j<POP2_X + POP2_W; j++) { - pp = (char *)(MAX_BLOCK_SIZE)(SCREEN_ADR + (i * 160) + (j * 2)); - save2[0][i-POP2_Y][j-POP2_X] = *pp; /* Save screen */ - set_scrn_buf(i, j, ' '); - *pp = ' '; /* Clear */ - pp++; - save2[1][i-POP2_Y][j-POP2_X] = *pp; - *pp = 0x07; /* Change Background to black */ - } - } - tty_print_region(POP2_Y, POP2_X, POP2_Y+POP2_H, POP2_X+POP2_W); -} - -void pop2down() -{ - int i, j; - char *pp; - - for (i=POP2_Y; i<POP2_Y + POP2_H; i++) { - for (j=POP2_X; j<POP2_X + POP2_W; j++) { - pp = (char *)(MAX_BLOCK_SIZE)(SCREEN_ADR + (i * 160) + (j * 2)); - *pp = save2[0][i-POP2_Y][j-POP2_X]; /* Restore screen */ - set_scrn_buf(i, j, save2[0][i-POP2_Y][j-POP2_X]); - pp++; - *pp = save2[1][i-POP2_Y][j-POP2_X]; /* Restore color */ - } - } - tty_print_region(POP2_Y, POP2_X, POP2_Y+POP2_H, POP2_X+POP2_W); -} - -void pop2clear() -{ - int i, j; - char *pp; - - for (i=POP2_Y; i<POP2_Y + POP2_H; i++) { - for (j=POP2_X; j<POP2_X + POP2_W; j++) { - pp = (char *)(MAX_BLOCK_SIZE)(SCREEN_ADR + (i * 160) + (j * 2)); - *pp = ' '; /* Clear popup */ - set_scrn_buf(i, j, ' '); - pp++; - } - } - tty_print_region(POP2_Y, POP2_X, POP2_Y+POP2_H, POP2_X+POP2_W); -} - - -void adj_mem(void) -{ - int i; - - vv->selected_pages = 0; - for (i=0; i< vv->msegs; i++) { - /* Segment inside limits ? */ - if (vv->pmap[i].start >= vv->plim_lower && - vv->pmap[i].end <= vv->plim_upper) { - vv->selected_pages += (vv->pmap[i].end - vv->pmap[i].start); - continue; - } - /* Segment starts below limit? */ - if (vv->pmap[i].start < vv->plim_lower) { - /* Also ends below limit? */ - if (vv->pmap[i].end < vv->plim_lower) { - continue; - } - - /* Ends past upper limit? */ - if (vv->pmap[i].end > vv->plim_upper) { - vv->selected_pages += - vv->plim_upper - vv->plim_lower; - } else { - /* Straddles lower limit */ - vv->selected_pages += - (vv->pmap[i].end - vv->plim_lower); - } - continue; - } - /* Segment ends above limit? */ - if (vv->pmap[i].end > vv->plim_upper) { - /* Also starts above limit? */ - if (vv->pmap[i].start > vv->plim_upper) { - continue; - } - /* Straddles upper limit */ - vv->selected_pages += - (vv->plim_upper - vv->pmap[i].start); - } - } -} |