rendered paste bodyvoid init()
{
unsigned long ch;
unsigned long *port;
asm(
".globl _start;"
"_start:;"
""
"bl get_r2;"
"get_r2:;"
"mflr %r3;"
"lis %r4, get_r2@toc@h;"
"ori %r4, %r4, get_r2@toc@l;"
"sldi %r4, %r4, 32;"
"sradi %r4, %r4, 32;"
"sub %r2, %r3, %r4;"
"lis %r4, 0x8000;"
"ori %r4, %r4, 0x200;"
"rldicr %r4, %r4, 32,31;"
"oris %r4, %r4, 0xea00;"
// dump r2
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
"andi. %r7, %r2, 0xff;"
"srdi %r2, %r2, 8;"
"bl putc;"
// dump r3
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
"andi. %r7, %r3, 0xff;"
"srdi %r3, %r3, 8;"
"bl putc;"
// dump r4
"mr %r8, %r4;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
// dump (r2)
"ld %r8, -0x8000(%r2);"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
"andi. %r7, %r8, 0xff;"
"srdi %r8, %r8, 8;"
"bl putc;"
// dump r1
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
"andi. %r7, %r1, 0xff;"
"srdi %r1, %r1, 8;"
"bl putc;"
// dump r31
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"andi. %r7, %r31, 0xff;"
"srdi %r31, %r31, 8;"
"bl putc;"
"putc:;"
"slwi %r7, %r7, 24;"
"stw %r7, 0x1014(%r4);"
"not_ready:;"
"lwz %r7, 0x1018(%r4);"
"rlwinm. %r7, %r7, 0, 6, 6;"
"beq not_ready;"
"blr;"
//*/
);
ch='X';
port=(unsigned long *)0x80000200ea001014;
while(1)
*port=ch << 24;
}