diff -ruN porting06/logging.c porting07/logging.c --- porting06/logging.c Sun Apr 19 21:53:32 2009 +++ porting07/logging.c Sun Apr 19 22:19:09 2009 @@ -5,10 +5,19 @@ int logging_cur = 0; int logging_buf[LOGGING_BUF_SIZE]; -void logging(int addr) +void logging_begin(int addr) { if (!logging_disable) { logging_buf[logging_cur++] = addr; + if (logging_cur >= LOGGING_BUF_SIZE) + logging_cur = 0; + } +} + +void logging_end(int addr) +{ + if (!logging_disable) { + logging_buf[logging_cur++] = addr | (1<<31); if (logging_cur >= LOGGING_BUF_SIZE) logging_cur = 0; } diff -ruN porting06/mcount.s porting07/mcount.s --- porting06/mcount.s Sun Apr 19 21:53:32 2009 +++ porting07/mcount.s Sun Apr 19 22:19:09 2009 @@ -13,11 +13,9 @@ stw 10,44(1) mflr 3 stw 3,8(1) - bl logging + bl logging_begin - lwz 9,8(1) - mtctr 9 - lwz 10,52(1) + lwz 10,8(1) mtlr 10 lwz 3,16(1) lwz 4,20(1) @@ -27,5 +25,16 @@ lwz 8,36(1) lwz 9,40(1) lwz 10,44(1) + blrl + + stw 3,16(1) + stw 4,20(1) + lwz 3,8(1) + bl logging_end + + lwz 10,52(1) + mtlr 10 + lwz 3,16(1) + lwz 4,20(1) addi 1,1,48 - bctr + blr