17dd7cddfSDavid du Colombier /* 27dd7cddfSDavid du Colombier * arm definition 37dd7cddfSDavid du Colombier */ 47dd7cddfSDavid du Colombier #include <u.h> 5*fe483074SDavid du Colombier #include <libc.h> 67dd7cddfSDavid du Colombier #include <bio.h> 77dd7cddfSDavid du Colombier #include "/arm/include/ureg.h" 87dd7cddfSDavid du Colombier #include <mach.h> 97dd7cddfSDavid du Colombier 107dd7cddfSDavid du Colombier #define REGOFF(x) (ulong) (&((struct Ureg *) 0)->x) 117dd7cddfSDavid du Colombier 127dd7cddfSDavid du Colombier #define SP REGOFF(r13) 137dd7cddfSDavid du Colombier #define PC REGOFF(pc) 147dd7cddfSDavid du Colombier 157dd7cddfSDavid du Colombier #define REGSIZE sizeof(struct Ureg) 167dd7cddfSDavid du Colombier 177dd7cddfSDavid du Colombier Reglist armreglist[] = 187dd7cddfSDavid du Colombier { 197dd7cddfSDavid du Colombier {"TYPE", REGOFF(type), RINT|RRDONLY, 'X'}, 207dd7cddfSDavid du Colombier {"PSR", REGOFF(psr), RINT|RRDONLY, 'X'}, 217dd7cddfSDavid du Colombier {"PC", PC, RINT, 'X'}, 227dd7cddfSDavid du Colombier {"SP", SP, RINT, 'X'}, 237dd7cddfSDavid du Colombier {"R15", PC, RINT, 'X'}, 247dd7cddfSDavid du Colombier {"R14", REGOFF(r14), RINT, 'X'}, 257dd7cddfSDavid du Colombier {"R13", REGOFF(r13), RINT, 'X'}, 267dd7cddfSDavid du Colombier {"R12", REGOFF(r12), RINT, 'X'}, 277dd7cddfSDavid du Colombier {"R11", REGOFF(r11), RINT, 'X'}, 287dd7cddfSDavid du Colombier {"R10", REGOFF(r10), RINT, 'X'}, 297dd7cddfSDavid du Colombier {"R9", REGOFF(r9), RINT, 'X'}, 307dd7cddfSDavid du Colombier {"R8", REGOFF(r8), RINT, 'X'}, 317dd7cddfSDavid du Colombier {"R7", REGOFF(r7), RINT, 'X'}, 327dd7cddfSDavid du Colombier {"R6", REGOFF(r6), RINT, 'X'}, 337dd7cddfSDavid du Colombier {"R5", REGOFF(r5), RINT, 'X'}, 347dd7cddfSDavid du Colombier {"R4", REGOFF(r4), RINT, 'X'}, 357dd7cddfSDavid du Colombier {"R3", REGOFF(r3), RINT, 'X'}, 367dd7cddfSDavid du Colombier {"R2", REGOFF(r2), RINT, 'X'}, 377dd7cddfSDavid du Colombier {"R1", REGOFF(r1), RINT, 'X'}, 387dd7cddfSDavid du Colombier {"R0", REGOFF(r0), RINT, 'X'}, 397dd7cddfSDavid du Colombier { 0 } 407dd7cddfSDavid du Colombier }; 417dd7cddfSDavid du Colombier 427dd7cddfSDavid du Colombier /* the machine description */ 437dd7cddfSDavid du Colombier Mach marm = 447dd7cddfSDavid du Colombier { 457dd7cddfSDavid du Colombier "arm", 467dd7cddfSDavid du Colombier MARM, /* machine type */ 477dd7cddfSDavid du Colombier armreglist, /* register set */ 487dd7cddfSDavid du Colombier REGSIZE, /* register set size */ 497dd7cddfSDavid du Colombier 0, /* fp register set size */ 507dd7cddfSDavid du Colombier "PC", /* name of PC */ 517dd7cddfSDavid du Colombier "SP", /* name of SP */ 5259cc4ca5SDavid du Colombier "R14", /* name of link register */ 537dd7cddfSDavid du Colombier "setR12", /* static base register name */ 547dd7cddfSDavid du Colombier 0, /* static base register value */ 557dd7cddfSDavid du Colombier 0x1000, /* page size */ 564de34a7eSDavid du Colombier 0xC0000000ULL, /* kernel base */ 572cca75a1SDavid du Colombier 0xC0000000ULL, /* kernel text mask */ 587ad596ffSDavid du Colombier 0x3FFFFFFFULL, /* user stack top */ 597dd7cddfSDavid du Colombier 4, /* quantization of pc */ 607dd7cddfSDavid du Colombier 4, /* szaddr */ 617dd7cddfSDavid du Colombier 4, /* szreg */ 627dd7cddfSDavid du Colombier 4, /* szfloat */ 637dd7cddfSDavid du Colombier 8, /* szdouble */ 647dd7cddfSDavid du Colombier }; 65