OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [cpukit/] [score/] [cpu/] [a29k/] [pswmacro.ah] - Diff between revs 1026 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1026 Rev 1765
; /* @(#)pswmacro.ah    1.1 96/05/23 08:56:58, TEI */
; /* @(#)pswmacro.ah    1.1 96/05/23 08:56:58, TEI */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                macros: Do_install and init_TLB
;                macros: Do_install and init_TLB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; /* pswmacro.ah,v 1.2 2000/09/22 13:59:41 joel Exp */
; /* pswmacro.ah,v 1.2 2000/09/22 13:59:41 joel Exp */
;* File information and includes.
;* File information and includes.
        .file   "macro.ah"
        .file   "macro.ah"
        .ident  "@(#)pswmacro.ah        1.1 96/05/23 08:56:58, TEI"
        .ident  "@(#)pswmacro.ah        1.1 96/05/23 08:56:58, TEI"
        .macro  CONST32, RegName, RegValue
        .macro  CONST32, RegName, RegValue
                const   RegName, RegValue
                const   RegName, RegValue
                consth  RegName, RegValue
                consth  RegName, RegValue
        .endm
        .endm
        .macro  CONSTX, RegName, RegValue
        .macro  CONSTX, RegName, RegValue
                .if (RegValue) <= 0x0000ffff
                .if (RegValue) <= 0x0000ffff
                        const   RegName, RegValue
                        const   RegName, RegValue
                .else
                .else
                        const   RegName, RegValue
                        const   RegName, RegValue
                        consth  RegName, RegValue
                        consth  RegName, RegValue
                .endif
                .endif
        .endm
        .endm
        .macro  PRODEV, RegName
        .macro  PRODEV, RegName
                srl     RegName, RegName, 24
                srl     RegName, RegName, 24
        .endm
        .endm
;
;
;* MACRO TO INSTALL VECTOR TABLE ENTRIES
;* MACRO TO INSTALL VECTOR TABLE ENTRIES
;
;
;* Assumes vector table address in v0
;* Assumes vector table address in v0
        .macro  _setvec, trapnum, trapaddr
        .macro  _setvec, trapnum, trapaddr
                mfsr    v0, vab                 ;
                mfsr    v0, vab                 ;
                const   v2, trapnum             ;
                const   v2, trapnum             ;
                sll     v1, v2, 2               ;
                sll     v1, v2, 2               ;
                add     v1, v1, v0              ; v0 has location of vector tab
                add     v1, v1, v0              ; v0 has location of vector tab
                const   v2, trapaddr            ;
                const   v2, trapaddr            ;
                consth  v2, trapaddr            ;
                consth  v2, trapaddr            ;
                store   0, 0, v2, v1            ;
                store   0, 0, v2, v1            ;
                nop                             ;
                nop                             ;
        .endm
        .endm
        .macro  syscall, name
        .macro  syscall, name
                const     tav, HIF_@name        ;
                const     tav, HIF_@name        ;
                asneq   V_SYSCALL, gr1, gr1     ;
                asneq   V_SYSCALL, gr1, gr1     ;
                nop                             ;
                nop                             ;
                nop                             ;
                nop                             ;
        .endm
        .endm
;* MACRO TO INSTALL VECTOR TABLE ENTRIES
;* MACRO TO INSTALL VECTOR TABLE ENTRIES
        .macro  Do_Install, V_Number, V_Address
        .macro  Do_Install, V_Number, V_Address
                const   lr4, V_Address
                const   lr4, V_Address
                consth  lr4, V_Address
                consth  lr4, V_Address
                const   lr3, V_Number * 4
                const   lr3, V_Number * 4
                consth  lr3, V_Number * 4
                consth  lr3, V_Number * 4
                call    lr0, V_Install
                call    lr0, V_Install
                nop
                nop
        .endm
        .endm
        .macro  Do_InstallX, V_Number, V_Address
        .macro  Do_InstallX, V_Number, V_Address
                const   lr4, V_Address
                const   lr4, V_Address
                consth  lr4, V_Address
                consth  lr4, V_Address
                const   lr3, V_Number * 4
                const   lr3, V_Number * 4
                consth  lr3, V_Number * 4
                consth  lr3, V_Number * 4
                call    lr0, V_InstallX
                call    lr0, V_InstallX
                nop
                nop
        .endm
        .endm
; push a register onto the stack
; push a register onto the stack
        .macro  pushreg, reg, sp
        .macro  pushreg, reg, sp
        sub     sp, sp, 4               ; adjust stack pointer
        sub     sp, sp, 4               ; adjust stack pointer
        store   0, 0, reg, sp           ; push register
        store   0, 0, reg, sp           ; push register
        .endm
        .endm
        .macro  push, sp, reg
        .macro  push, sp, reg
                sub     sp, sp, 4
                sub     sp, sp, 4
                store   0, 0, reg, sp
                store   0, 0, reg, sp
        .endm
        .endm
; pop the register from stack
; pop the register from stack
        .macro  popreg, reg, sp
        .macro  popreg, reg, sp
        load    0, 0, reg, sp           ; pop register
        load    0, 0, reg, sp           ; pop register
        add     sp, sp, 4               ; adjust stack pointer
        add     sp, sp, 4               ; adjust stack pointer
        .endm
        .endm
        .macro  pop, reg, sp
        .macro  pop, reg, sp
                load    0, 0, reg, sp
                load    0, 0, reg, sp
                add     sp, sp, 4
                add     sp, sp, 4
        .endm
        .endm
; push a special register onto stack
; push a special register onto stack
        .macro  pushspcl, spcl, tmpreg, sp
        .macro  pushspcl, spcl, tmpreg, sp
        sub     sp, sp, 4               ; adjust stack pointer
        sub     sp, sp, 4               ; adjust stack pointer
        mfsr    tmpreg, spcl            ; get spcl reg
        mfsr    tmpreg, spcl            ; get spcl reg
        store   0, 0, tmpreg, sp        ; push onto stack
        store   0, 0, tmpreg, sp        ; push onto stack
        .endm
        .endm
        .macro  pushsr, sp, reg, sreg
        .macro  pushsr, sp, reg, sreg
                mfsr    reg, sreg
                mfsr    reg, sreg
                sub     sp, sp, 4
                sub     sp, sp, 4
                store   0, 0, reg, sp
                store   0, 0, reg, sp
        .endm
        .endm
; pop a special register from stack
; pop a special register from stack
        .macro  popspcl, spcl, tmpreg, sp
        .macro  popspcl, spcl, tmpreg, sp
        load    0, 0, tmpreg, sp        ; pop from stack
        load    0, 0, tmpreg, sp        ; pop from stack
        add     sp, sp, 4               ; adjust stack pointer
        add     sp, sp, 4               ; adjust stack pointer
        mtsr    spcl, tmpreg            ; set spcl reg
        mtsr    spcl, tmpreg            ; set spcl reg
        .endm
        .endm
        .macro  popsr, sreg, reg, sp
        .macro  popsr, sreg, reg, sp
                load    0, 0, reg, sp
                load    0, 0, reg, sp
                add     sp, sp, 4
                add     sp, sp, 4
                mtsr    sreg, reg
                mtsr    sreg, reg
        .endm
        .endm
;
;
; save freeze mode registers on memory stack.
; save freeze mode registers on memory stack.
;
;
        .macro  SaveFZState,    tmp1, tmp2
        .macro  SaveFZState,    tmp1, tmp2
                ; save freeze mode registers.
                ; save freeze mode registers.
                pushspcl pc0, tmp1, msp
                pushspcl pc0, tmp1, msp
                pushspcl pc1, tmp1, msp
                pushspcl pc1, tmp1, msp
                pushspcl alu, tmp1, msp
                pushspcl alu, tmp1, msp
                pushspcl cha, tmp1, msp
                pushspcl cha, tmp1, msp
                pushspcl chd, tmp1, msp
                pushspcl chd, tmp1, msp
                pushspcl chc, tmp1, msp
                pushspcl chc, tmp1, msp
                pushspcl ops, tmp1, msp
                pushspcl ops, tmp1, msp
                ; turn freeze off
                ; turn freeze off
                const   tmp2, FZ
                const   tmp2, FZ
                mfsr    tmp1, cps
                mfsr    tmp1, cps
                andn    tmp1, tmp1, tmp2
                andn    tmp1, tmp1, tmp2
                mtsr    cps, tmp1
                mtsr    cps, tmp1
        .endm
        .endm
; restore freeze mode registers from memory stack.
; restore freeze mode registers from memory stack.
        .macro  RestoreFZState, tmp1, tmp2
        .macro  RestoreFZState, tmp1, tmp2
                ; turn freeze on
                ; turn freeze on
                const   tmp2, (FZ|DI|DA)
                const   tmp2, (FZ|DI|DA)
                mfsr    tmp1, cps
                mfsr    tmp1, cps
                or      tmp1, tmp1, tmp2
                or      tmp1, tmp1, tmp2
                mtsr    cps, tmp1
                mtsr    cps, tmp1
                ; restore freeze mode registers.
                ; restore freeze mode registers.
                popspcl ops, tmp1, msp
                popspcl ops, tmp1, msp
                popspcl chc, tmp1, msp
                popspcl chc, tmp1, msp
                popspcl chd, tmp1, msp
                popspcl chd, tmp1, msp
                popspcl cha, tmp1, msp
                popspcl cha, tmp1, msp
                popspcl alu, tmp1, msp
                popspcl alu, tmp1, msp
                popspcl pc1, tmp1, msp
                popspcl pc1, tmp1, msp
                popspcl pc0, tmp1, msp
                popspcl pc0, tmp1, msp
        .endm
        .endm
;
;
;*
;*
;
;
        .equ    WS,     512                             ; window size
        .equ    WS,     512                             ; window size
        .equ    RALLOC, 4 * 4                           ; stack alloc for C
        .equ    RALLOC, 4 * 4                           ; stack alloc for C
        .equ    SIGCTX_UM_SIZE, 40 * 4                  ;
        .equ    SIGCTX_UM_SIZE, 40 * 4                  ;
        .equ    SIGCTX_RFB, (38) * 4                    ; user mode saved
        .equ    SIGCTX_RFB, (38) * 4                    ; user mode saved
        .equ    SIGCTX_SM_SIZE, 12 * 4                  ;
        .equ    SIGCTX_SM_SIZE, 12 * 4                  ;
        .equ    SIGCTX_SIG, (11)*4 + SIGCTX_UM_SIZE     ;
        .equ    SIGCTX_SIG, (11)*4 + SIGCTX_UM_SIZE     ;
        .equ    SIGCTX_GR1, (10)*4 + SIGCTX_UM_SIZE     ;
        .equ    SIGCTX_GR1, (10)*4 + SIGCTX_UM_SIZE     ;
        .equ    SIGCTX_RAB, (9)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_RAB, (9)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_PC0, (8)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_PC0, (8)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_PC1, (7)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_PC1, (7)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_PC2, (6)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_PC2, (6)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_CHC, (3)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_CHC, (3)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_OPS, (1)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_OPS, (1)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_TAV, (0)*4 + SIGCTX_UM_SIZE      ;
        .equ    SIGCTX_TAV, (0)*4 + SIGCTX_UM_SIZE      ;
        .macro  sup_sv
        .macro  sup_sv
                add     it2, trapreg, 0                 ; transfer signal #
                add     it2, trapreg, 0                 ; transfer signal #
                sub     msp, msp, 4                     ;
                sub     msp, msp, 4                     ;
                store   0, 0, it2, msp                  ; save signal number
                store   0, 0, it2, msp                  ; save signal number
                sub     msp, msp, 4                     ; push gr1
                sub     msp, msp, 4                     ; push gr1
                store   0, 0, gr1, msp                  ;
                store   0, 0, gr1, msp                  ;
                sub     msp, msp, 4                     ; push rab
                sub     msp, msp, 4                     ; push rab
                store   0, 0, rab, msp                  ;
                store   0, 0, rab, msp                  ;
                const   it0, WS                         ; Window size
                const   it0, WS                         ; Window size
                sub     rab, rfb, it0                   ; set rab = rfb-512
                sub     rab, rfb, it0                   ; set rab = rfb-512
                pushsr  msp, it0, PC0                   ; save program counter0
                pushsr  msp, it0, PC0                   ; save program counter0
                pushsr  msp, it0, PC1                   ; save program counter1
                pushsr  msp, it0, PC1                   ; save program counter1
                pushsr  msp, it0, PC2                   ; save program counter2
                pushsr  msp, it0, PC2                   ; save program counter2
                pushsr  msp, it0, CHA                   ; save channel address
                pushsr  msp, it0, CHA                   ; save channel address
                pushsr  msp, it0, CHD                   ; save channel data
                pushsr  msp, it0, CHD                   ; save channel data
                pushsr  msp, it0, CHC                   ; save channel control
                pushsr  msp, it0, CHC                   ; save channel control
                pushsr  msp, it0, ALU                   ; save alu
                pushsr  msp, it0, ALU                   ; save alu
                pushsr  msp, it0, OPS                   ; save ops
                pushsr  msp, it0, OPS                   ; save ops
                sub     msp, msp, 4                     ;
                sub     msp, msp, 4                     ;
                store   0, 0, tav, msp                  ; push tav
                store   0, 0, tav, msp                  ; push tav
                mtsrim  chc, 0                          ; no loadm/storem
                mtsrim  chc, 0                          ; no loadm/storem
                mfsr    it0, ops                        ; get ops value
                mfsr    it0, ops                        ; get ops value
                const   it1, (TD | DI)                  ; disable interrupts
                const   it1, (TD | DI)                  ; disable interrupts
                consth  it1, (TD | DI)                  ; disable interrupts
                consth  it1, (TD | DI)                  ; disable interrupts
                or      it0, it0, it1                   ; set bits
                or      it0, it0, it1                   ; set bits
                mtsr    ops, it0                        ; set new ops
                mtsr    ops, it0                        ; set new ops
                const   it0, _sigcode                   ; signal handler
                const   it0, _sigcode                   ; signal handler
                consth  it0, _sigcode                   ; signal handler
                consth  it0, _sigcode                   ; signal handler
                mtsr    pc1, it0                        ; store pc1
                mtsr    pc1, it0                        ; store pc1
                add     it1, it0, 4                     ; next addr
                add     it1, it0, 4                     ; next addr
                mtsr    pc0, it1                        ; store pc1 location
                mtsr    pc0, it1                        ; store pc1 location
                iret                                    ; return
                iret                                    ; return
                nop                                     ; ALIGN
                nop                                     ; ALIGN
        .endm
        .endm
        .macro  sig_return
        .macro  sig_return
                mfsr    it0, cps                        ; get processor status
                mfsr    it0, cps                        ; get processor status
                const   it1, FZ|DA                      ; Freeze + traps disable
                const   it1, FZ|DA                      ; Freeze + traps disable
                or      it0, it0, it1                   ; to set FZ+DA
                or      it0, it0, it1                   ; to set FZ+DA
                mtsr    cps, it0                        ; in freeze mode
                mtsr    cps, it0                        ; in freeze mode
                load    0, 0, tav, msp                  ; restore tav
                load    0, 0, tav, msp                  ; restore tav
                add     msp, msp, 4                     ;
                add     msp, msp, 4                     ;
                popsr   OPS,it0, msp                    ;
                popsr   OPS,it0, msp                    ;
                popsr   ALU,it0, msp                    ;
                popsr   ALU,it0, msp                    ;
                popsr   CHC,it0, msp                    ;
                popsr   CHC,it0, msp                    ;
                popsr   CHD,it0, msp                    ;
                popsr   CHD,it0, msp                    ;
                popsr   CHA,it0, msp                    ;
                popsr   CHA,it0, msp                    ;
                popsr   PC2,it0, msp                    ;
                popsr   PC2,it0, msp                    ;
                popsr   PC1,it0, msp                    ;
                popsr   PC1,it0, msp                    ;
                popsr   PC0,it0, msp                    ;
                popsr   PC0,it0, msp                    ;
                load    0, 0, rab, msp                  ;
                load    0, 0, rab, msp                  ;
                add     msp, msp, 4                     ;
                add     msp, msp, 4                     ;
                load    0, 0, it0, msp                  ;
                load    0, 0, it0, msp                  ;
                add     gr1, it0, 0                     ; pop rsp
                add     gr1, it0, 0                     ; pop rsp
                add     msp, msp, 8                     ; discount signal #
                add     msp, msp, 8                     ; discount signal #
                iret
                iret
        .endm
        .endm
        .macro  repair_R_stack
        .macro  repair_R_stack
                add     v0, msp, SIGCTX_GR1             ; interrupted gr1
                add     v0, msp, SIGCTX_GR1             ; interrupted gr1
                load    0, 0, v2, v0                    ;
                load    0, 0, v2, v0                    ;
                add     v0, msp, SIGCTX_RFB             ;
                add     v0, msp, SIGCTX_RFB             ;
                load    0, 0, v3, v0                    ; interupted rfb
                load    0, 0, v3, v0                    ; interupted rfb
                const   v1, WS                          ;
                const   v1, WS                          ;
                sub     v1, v3, v1                      ; rfb-512
                sub     v1, v3, v1                      ; rfb-512
                cpltu   v0, v2, v1                      ; test gr1 < rfb-512
                cpltu   v0, v2, v1                      ; test gr1 < rfb-512
                jmpf    v0, $1                          ;
                jmpf    v0, $1                          ;
                add     gr1, rab, 0                     ;
                add     gr1, rab, 0                     ;
                add     v2, v1, 0                       ; set LB = rfb-512
                add     v2, v1, 0                       ; set LB = rfb-512
$1:
$1:
;* if gr1 < rfb-512 yes LB = rfb-512 signalled during spill
;* if gr1 < rfb-512 yes LB = rfb-512 signalled during spill
;* if no, LB=gr1 interrupted cache < 126 registers
;* if no, LB=gr1 interrupted cache < 126 registers
                cpleu   v0, v2, rfb                     ; test LB<=rfb
                cpleu   v0, v2, rfb                     ; test LB<=rfb
                jmpf    v0, $2                          ;
                jmpf    v0, $2                          ;
                nop                                     ;
                nop                                     ;
                add     v2, rfb, 0                      ;
                add     v2, rfb, 0                      ;
$2:
$2:
                cpeq    v0, v3, rfb                     ; fill rfb->rfb
                cpeq    v0, v3, rfb                     ; fill rfb->rfb
                jmpt    v0, $3                          ; if rfb==rfb
                jmpt    v0, $3                          ; if rfb==rfb
                const   tav, (0x80<<2)                  ; prepare for fill
                const   tav, (0x80<<2)                  ; prepare for fill
                or      tav, tav, v2                    ;
                or      tav, tav, v2                    ;
                mtsr    IPA, tav                        ; IPA=LA<<2
                mtsr    IPA, tav                        ; IPA=LA<<2
                sub     tav, v3, gr98                   ; cache fill LA->rfb
                sub     tav, v3, gr98                   ; cache fill LA->rfb
                srl     tav, tav, 2                     ; convert to words
                srl     tav, tav, 2                     ; convert to words
                sub     tav, tav, 1                     ;
                sub     tav, tav, 1                     ;
                mtsr    cr, tav                         ;
                mtsr    cr, tav                         ;
                loadm   0, 0, gr0, v2                   ; fill from LA->rfb
                loadm   0, 0, gr0, v2                   ; fill from LA->rfb
$3:
$3:
                add     rfb, v3, 0                      ; move rfb upto rfb
                add     rfb, v3, 0                      ; move rfb upto rfb
                sub     rab, v1, 0                      ; assign rab to rfb-512
                sub     rab, v1, 0                      ; assign rab to rfb-512
                add     v0, msp, SIGCTX_GR1             ;
                add     v0, msp, SIGCTX_GR1             ;
                load    0, 0, v2, v0                    ; v0 = interrupted gr1
                load    0, 0, v2, v0                    ; v0 = interrupted gr1
                add     gr1, v2, 0                      ; move gr1 upto gr1
                add     gr1, v2, 0                      ; move gr1 upto gr1
                nop                                     ;
                nop                                     ;
        .endm
        .endm
        .macro  repair_regs
        .macro  repair_regs
                mtsrim  cr, 29 - 1                      ; to restore locals
                mtsrim  cr, 29 - 1                      ; to restore locals
                loadm   0, 0, v0, msp                   ;
                loadm   0, 0, v0, msp                   ;
                add     msp, msp, 29*4                  ;
                add     msp, msp, 29*4                  ;
                popsr   Q, tav, msp                     ;
                popsr   Q, tav, msp                     ;
                popsr   IPC, tav, msp                   ;
                popsr   IPC, tav, msp                   ;
                popsr   IPB, tav, msp                   ;
                popsr   IPB, tav, msp                   ;
                popsr   IPA, tav, msp                   ;
                popsr   IPA, tav, msp                   ;
                pop     FPStat3, msp                    ; floating point regs
                pop     FPStat3, msp                    ; floating point regs
                pop     FPStat2, msp                    ; floating point regs
                pop     FPStat2, msp                    ; floating point regs
                pop     FPStat1, msp                    ; floating point regs
                pop     FPStat1, msp                    ; floating point regs
                pop     FPStat0, msp                    ; floating point regs
                pop     FPStat0, msp                    ; floating point regs
                add     msp, msp, 3*4                   ; R-stack repaired
                add     msp, msp, 3*4                   ; R-stack repaired
        .endm
        .endm
;
;
;*HIF related...
;*HIF related...
;
;
; send the message in bufaddr to Montip.
; send the message in bufaddr to Montip.
        .macro  SendMessageToMontip,    bufaddr
        .macro  SendMessageToMontip,    bufaddr
        const   lr2, bufaddr
        const   lr2, bufaddr
$1:
$1:
        call    lr0, _msg_send
        call    lr0, _msg_send
        consth  lr2, bufaddr
        consth  lr2, bufaddr
        cpeq    gr96, gr96, 0
        cpeq    gr96, gr96, 0
        jmpf    gr96, $1
        jmpf    gr96, $1
        const   lr2, bufaddr
        const   lr2, bufaddr
        .endm
        .endm
; build a HIF_CALL message in bufaddr to send to montip.
; build a HIF_CALL message in bufaddr to send to montip.
        .macro  BuildHIFCALLMsg,        bufaddr, tmp1, tmp2
        .macro  BuildHIFCALLMsg,        bufaddr, tmp1, tmp2
        const   tmp1, bufaddr
        const   tmp1, bufaddr
        consth  tmp1, bufaddr
        consth  tmp1, bufaddr
        const   tmp2, HIF_CALL_MSGCODE
        const   tmp2, HIF_CALL_MSGCODE
        store   0, 0, tmp2, tmp1        ; msg code
        store   0, 0, tmp2, tmp1        ; msg code
        add     tmp1, tmp1, 4
        add     tmp1, tmp1, 4
        const   tmp2, HIF_CALL_MSGLEN
        const   tmp2, HIF_CALL_MSGLEN
        store   0, 0, tmp2, tmp1        ; msg len
        store   0, 0, tmp2, tmp1        ; msg len
        add     tmp1, tmp1, 4
        add     tmp1, tmp1, 4
        store   0, 0, gr121, tmp1       ; service number
        store   0, 0, gr121, tmp1       ; service number
        add     tmp1, tmp1, 4
        add     tmp1, tmp1, 4
        store   0, 0, lr2, tmp1         ; lr2
        store   0, 0, lr2, tmp1         ; lr2
        add     tmp1, tmp1, 4
        add     tmp1, tmp1, 4
        store   0, 0, lr3, tmp1         ; lr3
        store   0, 0, lr3, tmp1         ; lr3
        add     tmp1, tmp1, 4
        add     tmp1, tmp1, 4
        store   0, 0, lr4, tmp1         ; lr4
        store   0, 0, lr4, tmp1         ; lr4
        .endm
        .endm
;
;
;*
;*
;* All the funky AMD style macros go in here...simply for
;* All the funky AMD style macros go in here...simply for
;* compatility
;* compatility
;
;
;
;
  .macro        IMPORT, symbol
  .macro        IMPORT, symbol
        .extern symbol
        .extern symbol
  .endm
  .endm
  .macro        GLOBAL, symbol
  .macro        GLOBAL, symbol
        .global symbol
        .global symbol
  .endm
  .endm
  .macro        USESECT, name, type
  .macro        USESECT, name, type
        .sect   name, type
        .sect   name, type
        .use    name
        .use    name
  .endm
  .endm
  .macro        SECTION, name, type
  .macro        SECTION, name, type
        .sect   name, type
        .sect   name, type
  .endm
  .endm
 .macro FUNC, fname, lineno
 .macro FUNC, fname, lineno
        .global fname
        .global fname
fname:
fname:
 .endm
 .endm
 .macro ENDFUNC, fname, lineno
 .macro ENDFUNC, fname, lineno
 .endm
 .endm
;*************************************LONG
;*************************************LONG
 .macro LONG, varname
 .macro LONG, varname
varname:
varname:
        .block  4
        .block  4
 .endm
 .endm
;*************************************UNSIGNED LONG
;*************************************UNSIGNED LONG
 .macro ULONG, varname
 .macro ULONG, varname
varname:
varname:
        .block  4
        .block  4
 .endm
 .endm
;*************************************SHORT
;*************************************SHORT
 .macro SHORT, varname
 .macro SHORT, varname
varname:
varname:
        .block  2
        .block  2
 .endm
 .endm
;*************************************CHAR
;*************************************CHAR
 .macro CHAR, varname
 .macro CHAR, varname
varname:
varname:
        .block  1
        .block  1
 .endm
 .endm
;*************************************LONGARRAY
;*************************************LONGARRAY
 .macro LONGARRAY, name, count
 .macro LONGARRAY, name, count
name:
name:
        .block  count*4
        .block  count*4
 .endm
 .endm
;*************************************SHORTARRAY
;*************************************SHORTARRAY
 .macro SHORTARRAY, name, count
 .macro SHORTARRAY, name, count
name:
name:
        .block  count*2
        .block  count*2
 .endm
 .endm
;*************************************CHARARRAY
;*************************************CHARARRAY
 .macro CHARARRAY, name, count
 .macro CHARARRAY, name, count
name:
name:
        .block  count
        .block  count
 .endm
 .endm
;*************************************VOID_FPTR
;*************************************VOID_FPTR
 .macro VOID_FPTR, name
 .macro VOID_FPTR, name
name:
name:
        .block  4
        .block  4
 .endm
 .endm
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.