645#elif CPU(MIPS)
646
647#if USE(JIT_STUB_ARGUMENT_VA_LIST)
648#error "JIT_STUB_ARGUMENT_VA_LIST not supported on MIPS."
649#endif
650
651asm volatile(
652".text" "\n"
653".align 2" "\n"
654".set noreorder" "\n"
655".set nomacro" "\n"
656".set nomips16" "\n"
657".globl " SYMBOL_STRING(ctiTrampoline) "\n"
658".ent " SYMBOL_STRING(ctiTrampoline) "\n"
659SYMBOL_STRING(ctiTrampoline) ":" "\n"
660 "addiu $29,$29,-72" "\n"
661 "sw $31,44($29)" "\n"
662 "sw $18,40($29)" "\n"
663 "sw $17,36($29)" "\n"
664 "sw $16,32($29)" "\n"
665#if WTF_MIPS_PIC
666 "sw $28,28($29)" "\n"
667#endif
668 "move $16,$6 # set callFrameRegister" "\n"
669 "li $17,512 # set timeoutCheckRegister" "\n"
670 "move $25,$4 # move executableAddress to t9" "\n"
671 "sw $5,52($29) # store registerFile to current stack" "\n"
672 "sw $6,56($29) # store callFrame to curent stack" "\n"
673 "sw $7,60($29) # store exception to current stack" "\n"
674 "lw $8,88($29) # load enableProfilerReference from previous stack" "\n"
675 "lw $9,92($29) # load globalData from previous stack" "\n"
676 "sw $8,64($29) # store enableProfilerReference to current stack" "\n"
677 "jalr $25" "\n"
678 "sw $9,68($29) # store globalData to current stack" "\n"
679 "lw $16,32($29)" "\n"
680 "lw $17,36($29)" "\n"
681 "lw $18,40($29)" "\n"
682 "lw $31,44($29)" "\n"
683 "jr $31" "\n"
684 "addiu $29,$29,72" "\n"
685".set reorder" "\n"
686".set macro" "\n"
687".end " SYMBOL_STRING(ctiTrampoline) "\n"
688);
689
690asm volatile(
691".text" "\n"
692".align 2" "\n"
693".set noreorder" "\n"
694".set nomacro" "\n"
695".set nomips16" "\n"
696".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
697".ent " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
698SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
699#if WTF_MIPS_PIC
700 "lw $28,28($29)" "\n"
701".set macro" "\n"
702 "la $25," SYMBOL_STRING(cti_vm_throw) "\n"
703".set nomacro" "\n"
704 "bal " SYMBOL_STRING(cti_vm_throw) "\n"
705 "move $4,$29" "\n"
706#else
707 "jal " SYMBOL_STRING(cti_vm_throw) "\n"
708 "move $4,$29" "\n"
709#endif
710 "lw $16,32($29)" "\n"
711 "lw $17,36($29)" "\n"
712 "lw $18,40($29)" "\n"
713 "lw $31,44($29)" "\n"
714 "jr $31" "\n"
715 "addiu $29,$29,72" "\n"
716".set reorder" "\n"
717".set macro" "\n"
718".end " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
719);
720
721asm volatile(
722".text" "\n"
723".align 2" "\n"
724".set noreorder" "\n"
725".set nomacro" "\n"
726".set nomips16" "\n"
727".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
728".ent " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
729SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
730 "lw $16,32($29)" "\n"
731 "lw $17,36($29)" "\n"
732 "lw $18,40($29)" "\n"
733 "lw $31,44($29)" "\n"
734 "jr $31" "\n"
735 "addiu $29,$29,72" "\n"
736".set reorder" "\n"
737".set macro" "\n"
738".end " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
739);
740