rendered paste bodyvoid init()
{
unsigned int ch;
unsigned int *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;"
);
main();
}
void putchar(unsigned char ch)
{
volatile unsigned int *portout = (unsigned int *) 0x80000200ea001014;
volatile unsigned int *portstat = (unsigned int *) 0x80000200ea001018;
*portout = ch << 24;
while ( !(*portstat & 0x02000000));
return;
}
unsigned char getchar(void)
{
volatile unsigned int *portin = (unsigned int *) 0x80000200ea001010;
volatile unsigned int *portstat = (unsigned int *) 0x80000200ea001018;
while (*portstat & 0xfdffffff != 0x01000000);
return *portin >> 24;
}
int main(void)
{
unsigned char mch;
mch='X';
while(1)
putchar(mch);
return 0;
}