.file "logger.s" .text .align 2 _rombase: .globl _start .globl __init_main .globl trace_interrupt .globl T32_LoggerStruct .org _rombase+0x100 _start: addi r0,r0,0 # init stack pointer addis r11,r0,__SP_INIT@ha addi r1,r11,__SP_INIT@l addis r13,r0,_SDA_BASE_@ha addi r13,r13,_SDA_BASE_@l addis r2,r0,_SDA2_BASE_@ha addi r2,r2,_SDA2_BASE_@l addi r0,r0,0 stwu r0,-64(r1) bl __init_main # Finish initialization; call main(). #************************************************************************** # # High Performance Logger Trace Exception # # Supports only FIFO program flow trace mode without timestamp # #************************************************************************** .entry trace_interrupt .org _rombase+0xd00 trace_interrupt: mtspr sprg0,r3 mtspr sprg1,r4 lis r4,(T32_LoggerStruct+8)@ha lwz r3,(T32_LoggerStruct+8)@l(r4) addi r3,r3,1 stw r3,(T32_LoggerStruct+8)@l(r4) subi r3,r3,1 clrlwi r3,r3,(32-10) # size of trace buffer slwi r3,r3,4 add r4,r4,r3 mfsrr0 r3 stw r3,(T32_LoggerStruct+32+8)@l(r4) lis r3,0xf000 stw r3,(T32_LoggerStruct+32+0)@l(r4) mfspr r3,sprg0 mfspr r4,sprg1 rfi .org _rombase+0x2000 #************************************************************************** # # Dummy Compiler Lib Init Code # #************************************************************************** .section .init,2,C .globl __init .align 2 __init: mfspr r0,8 stwu r1,-64(r1) stw r0,68(r1) .section .fini,2,C # Return from __init lwz r0,68(r1) addi r1,r1,64 mtspr 8,r0 blr .globl __fini __fini: mfspr r0,8 stwu r1,-64(r1) stw r0,68(r1) .section .eini,2,C # Return from __fini lwz r0,68(r1) addi r1,r1,64 mtspr 8,r0 blr