1*3de6a9c0SDavid du Colombierstatic void 2*3de6a9c0SDavid du Colombierforcele(void) 3*3de6a9c0SDavid du Colombier{ 4*3de6a9c0SDavid du Colombier#ifdef BIGENDCHECK 5*3de6a9c0SDavid du Colombier union { 6*3de6a9c0SDavid du Colombier ulong ul; 7*3de6a9c0SDavid du Colombier uchar uc[sizeof(ulong)]; 8*3de6a9c0SDavid du Colombier } u; 9*3de6a9c0SDavid du Colombier 10*3de6a9c0SDavid du Colombier u.ul = 0; 11*3de6a9c0SDavid du Colombier coherence(); 12*3de6a9c0SDavid du Colombier u.uc[0] = 1; 13*3de6a9c0SDavid du Colombier coherence(); 14*3de6a9c0SDavid du Colombier if (u.ul == 1) 15*3de6a9c0SDavid du Colombier return; 16*3de6a9c0SDavid du Colombier 17*3de6a9c0SDavid du Colombier emerge('?'); 18*3de6a9c0SDavid du Colombier emerge('e'); 19*3de6a9c0SDavid du Colombier if ((u.ul & MASK(8)) == 0) { 20*3de6a9c0SDavid du Colombier emerge('B'); 21*3de6a9c0SDavid du Colombier panic("rdbaseticks: cpu%d is big-endian", m->machno); 22*3de6a9c0SDavid du Colombier } else { 23*3de6a9c0SDavid du Colombier emerge('W'); 24*3de6a9c0SDavid du Colombier panic("rdbaseticks: cpu%d is whacked-endian", m->machno); 25*3de6a9c0SDavid du Colombier } 26*3de6a9c0SDavid du Colombier#endif 27*3de6a9c0SDavid du Colombier} 28*3de6a9c0SDavid du Colombier 29*3de6a9c0SDavid du Colombiervoid 30*3de6a9c0SDavid du Colombierckbigendian(char *state) 31*3de6a9c0SDavid du Colombier{ 32*3de6a9c0SDavid du Colombier int wrong; 33*3de6a9c0SDavid du Colombier 34*3de6a9c0SDavid du Colombier wrong = 0; 35*3de6a9c0SDavid du Colombier if (getpsr() & PsrBigend) { 36*3de6a9c0SDavid du Colombier setendlittle(); 37*3de6a9c0SDavid du Colombier wrong++; 38*3de6a9c0SDavid du Colombier wave('?'); 39*3de6a9c0SDavid du Colombier wave('e'); 40*3de6a9c0SDavid du Colombier wave('p'); 41*3de6a9c0SDavid du Colombier if (state == nil) 42*3de6a9c0SDavid du Colombier state = "running"; 43*3de6a9c0SDavid du Colombier iprint("cpu%d: %s in big-endian mode\n", m->machno, state); 44*3de6a9c0SDavid du Colombier } 45*3de6a9c0SDavid du Colombier if (controlget() & CpCee) { 46*3de6a9c0SDavid du Colombier wrong++; 47*3de6a9c0SDavid du Colombier wave('?'); 48*3de6a9c0SDavid du Colombier wave('e'); 49*3de6a9c0SDavid du Colombier wave('e'); 50*3de6a9c0SDavid du Colombier if (state == nil) 51*3de6a9c0SDavid du Colombier state = "running"; 52*3de6a9c0SDavid du Colombier iprint("cpu%d: %s with big-endian exceptions\n", m->machno, state); 53*3de6a9c0SDavid du Colombier } 54*3de6a9c0SDavid du Colombier if (wrong) { 55*3de6a9c0SDavid du Colombier dumpstack(); 56*3de6a9c0SDavid du Colombier delay(3000); 57*3de6a9c0SDavid du Colombier panic("cpu%d: big-endian", m->machno); 58*3de6a9c0SDavid du Colombier } 59*3de6a9c0SDavid du Colombier} 60