1*773d7fd2Sforsyth// amd64 2*773d7fd2Sforsyth 3*773d7fd2Sforsythdefn acidinit() 4*773d7fd2Sforsyth{ 5*773d7fd2Sforsyth bplist = {}; 6*773d7fd2Sforsyth bpfmt = 'b'; 7*773d7fd2Sforsyth 8*773d7fd2Sforsyth srcpath = { 9*773d7fd2Sforsyth "./", 10*773d7fd2Sforsyth "/sys/src/libc/port/", 11*773d7fd2Sforsyth "/sys/src/libc/9sys/", 12*773d7fd2Sforsyth "/sys/src/libc/amd64/" 13*773d7fd2Sforsyth }; 14*773d7fd2Sforsyth 15*773d7fd2Sforsyth srcfiles = {}; // list of loaded files 16*773d7fd2Sforsyth srctext = {}; // the text of the files 17*773d7fd2Sforsyth} 18*773d7fd2Sforsyth 19*773d7fd2Sforsythdefn gpr() 20*773d7fd2Sforsyth{ 21*773d7fd2Sforsyth print("AX ", *AX, "\n"); 22*773d7fd2Sforsyth print("BX ", *BX, "\n"); 23*773d7fd2Sforsyth print("CX ", *CX, "\n"); 24*773d7fd2Sforsyth print("DX ", *DX, "\n"); 25*773d7fd2Sforsyth print("DI ", *DI, "\n"); 26*773d7fd2Sforsyth print("SI ", *SI, "\n"); 27*773d7fd2Sforsyth print("BP ", *BP, "\n"); 28*773d7fd2Sforsyth print("R8 ", *R8, "\n"); 29*773d7fd2Sforsyth print("R9 ", *R9, "\n"); 30*773d7fd2Sforsyth print("R10 ", *R10, "\n"); 31*773d7fd2Sforsyth print("R11 ", *R11, "\n"); 32*773d7fd2Sforsyth print("R12 ", *R12, "\n"); 33*773d7fd2Sforsyth print("R13 ", *R13, "\n"); 34*773d7fd2Sforsyth print("R14 ", *R14, "\n"); 35*773d7fd2Sforsyth print("R15 ", *R15, "\n"); 36*773d7fd2Sforsyth} 37*773d7fd2Sforsyth 38*773d7fd2Sforsythdefn spr() 39*773d7fd2Sforsyth{ 40*773d7fd2Sforsyth print("DS ", *DS, " ES ", *ES, " FS ", *FS, " GS ", *GS, "\n"); 41*773d7fd2Sforsyth print("TYPE ", *TYPE, "\n"); 42*773d7fd2Sforsyth print("ERROR ", *ERROR, "\n"); 43*773d7fd2Sforsyth print("PC ", *PC, "\n"); 44*773d7fd2Sforsyth print("CS ", *CS, "\n"); 45*773d7fd2Sforsyth print("FLAGS ", *FLAGS, "\n"); 46*773d7fd2Sforsyth print("SP ", *SP, "\n"); 47*773d7fd2Sforsyth print("SS ", *SS, "\n"); 48*773d7fd2Sforsyth} 49*773d7fd2Sforsyth 50*773d7fd2Sforsythdefn x87r() 51*773d7fd2Sforsyth{ 52*773d7fd2Sforsyth print("FCW ", *FCW, " FSW ", *FSW, " FTW ", *FTW, " FOP ", *FOP, "\n"); 53*773d7fd2Sforsyth print("RIP ", *RIP, " RDP ", *RDP, "\n"); 54*773d7fd2Sforsyth print("M0 ", *M0, "\n"); 55*773d7fd2Sforsyth print("M1 ", *M1, "\n"); 56*773d7fd2Sforsyth print("M2 ", *M2, "\n"); 57*773d7fd2Sforsyth print("M3 ", *M3, "\n"); 58*773d7fd2Sforsyth print("M4 ", *M4, "\n"); 59*773d7fd2Sforsyth print("M5 ", *M5, "\n"); 60*773d7fd2Sforsyth print("M6 ", *M6, "\n"); 61*773d7fd2Sforsyth print("M7 ", *M7, "\n"); 62*773d7fd2Sforsyth} 63*773d7fd2Sforsyth 64*773d7fd2Sforsythdefn xmmr() 65*773d7fd2Sforsyth{ 66*773d7fd2Sforsyth print("MXCSR ", *MXCSR, " MXCSRMASK ", *MXCSRMASK, "\n"); 67*773d7fd2Sforsyth print("X0 ", *X0, "\n"); 68*773d7fd2Sforsyth print("X1 ", *X1, "\n"); 69*773d7fd2Sforsyth print("X2 ", *X2, "\n"); 70*773d7fd2Sforsyth print("X3 ", *X3, "\n"); 71*773d7fd2Sforsyth print("X4 ", *X4, "\n"); 72*773d7fd2Sforsyth print("X5 ", *X5, "\n"); 73*773d7fd2Sforsyth print("X6 ", *X6, "\n"); 74*773d7fd2Sforsyth print("X7 ", *X7, "\n"); 75*773d7fd2Sforsyth print("X8 ", *X8, "\n"); 76*773d7fd2Sforsyth print("X9 ", *X9, "\n"); 77*773d7fd2Sforsyth print("X10 ", *X10, "\n"); 78*773d7fd2Sforsyth print("X11 ", *X11, "\n"); 79*773d7fd2Sforsyth print("X12 ", *X12, "\n"); 80*773d7fd2Sforsyth print("X13 ", *X13, "\n"); 81*773d7fd2Sforsyth print("X14 ", *X14, "\n"); 82*773d7fd2Sforsyth print("X15 ", *X15, "\n"); 83*773d7fd2Sforsyth} 84*773d7fd2Sforsyth 85*773d7fd2Sforsythdefn fpr() 86*773d7fd2Sforsyth{ 87*773d7fd2Sforsyth xmmr(); 88*773d7fd2Sforsyth} 89*773d7fd2Sforsyth 90*773d7fd2Sforsythdefn regs() 91*773d7fd2Sforsyth{ 92*773d7fd2Sforsyth gpr(); 93*773d7fd2Sforsyth spr(); 94*773d7fd2Sforsyth} 95*773d7fd2Sforsyth 96*773d7fd2Sforsythdefn pstop(pid) 97*773d7fd2Sforsyth{ 98*773d7fd2Sforsyth local l; 99*773d7fd2Sforsyth local pc; 100*773d7fd2Sforsyth 101*773d7fd2Sforsyth pc = *PC; 102*773d7fd2Sforsyth 103*773d7fd2Sforsyth print(pid,": ", reason(*TRAP), "\t"); 104*773d7fd2Sforsyth print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n"); 105*773d7fd2Sforsyth 106*773d7fd2Sforsyth if notes then { 107*773d7fd2Sforsyth if notes[0] != "sys: breakpoint" then { 108*773d7fd2Sforsyth print("Notes pending:\n"); 109*773d7fd2Sforsyth l = notes; 110*773d7fd2Sforsyth while l do { 111*773d7fd2Sforsyth print("\t", head l, "\n"); 112*773d7fd2Sforsyth l = tail l; 113*773d7fd2Sforsyth } 114*773d7fd2Sforsyth } 115*773d7fd2Sforsyth } 116*773d7fd2Sforsyth} 117*773d7fd2Sforsyth 118*773d7fd2Sforsythdefn stk() 119*773d7fd2Sforsyth{ 120*773d7fd2Sforsyth _stk(*PC, *SP, 0, 0); 121*773d7fd2Sforsyth} 122*773d7fd2Sforsyth 123*773d7fd2Sforsythprint("/sys/lib/acid/amd64"); 124