563 if (C->need_stack_bang(bangsize)) {
564 framesize -= wordSize;
565 st->print("# stack bang (%d bytes)", bangsize);
566 st->print("\n\t");
567 st->print("PUSH EBP\t# Save EBP");
568 if (PreserveFramePointer) {
569 st->print("\n\t");
570 st->print("MOV EBP, ESP\t# Save the caller's SP into EBP");
571 }
572 if (framesize) {
573 st->print("\n\t");
574 st->print("SUB ESP, #%d\t# Create frame",framesize);
575 }
576 } else {
577 st->print("SUB ESP, #%d\t# Create frame",framesize);
578 st->print("\n\t");
579 framesize -= wordSize;
580 st->print("MOV [ESP + #%d], EBP\t# Save EBP",framesize);
581 if (PreserveFramePointer) {
582 st->print("\n\t");
583 st->print("MOV EBP, [ESP + #%d]\t# Save the caller's SP into EBP", (framesize + wordSize));
584 }
585 }
586
587 if (VerifyStackAtCalls) {
588 st->print("\n\t");
589 framesize -= wordSize;
590 st->print("MOV [ESP + #%d], 0xBADB100D\t# Majik cookie for stack depth check",framesize);
591 }
592
593 if( C->in_24_bit_fp_mode() ) {
594 st->print("\n\t");
595 st->print("FLDCW \t# load 24 bit fpu control word");
596 }
597 if (UseSSE >= 2 && VerifyFPU) {
598 st->print("\n\t");
599 st->print("# verify FPU stack (must be clean on entry)");
600 }
601
602 #ifdef ASSERT
603 if (VerifyStackAtCalls) {
|
563 if (C->need_stack_bang(bangsize)) {
564 framesize -= wordSize;
565 st->print("# stack bang (%d bytes)", bangsize);
566 st->print("\n\t");
567 st->print("PUSH EBP\t# Save EBP");
568 if (PreserveFramePointer) {
569 st->print("\n\t");
570 st->print("MOV EBP, ESP\t# Save the caller's SP into EBP");
571 }
572 if (framesize) {
573 st->print("\n\t");
574 st->print("SUB ESP, #%d\t# Create frame",framesize);
575 }
576 } else {
577 st->print("SUB ESP, #%d\t# Create frame",framesize);
578 st->print("\n\t");
579 framesize -= wordSize;
580 st->print("MOV [ESP + #%d], EBP\t# Save EBP",framesize);
581 if (PreserveFramePointer) {
582 st->print("\n\t");
583 st->print("MOV EBP, ESP\t# Save the caller's SP into EBP");
584 }
585 }
586
587 if (VerifyStackAtCalls) {
588 st->print("\n\t");
589 framesize -= wordSize;
590 st->print("MOV [ESP + #%d], 0xBADB100D\t# Majik cookie for stack depth check",framesize);
591 }
592
593 if( C->in_24_bit_fp_mode() ) {
594 st->print("\n\t");
595 st->print("FLDCW \t# load 24 bit fpu control word");
596 }
597 if (UseSSE >= 2 && VerifyFPU) {
598 st->print("\n\t");
599 st->print("# verify FPU stack (must be clean on entry)");
600 }
601
602 #ifdef ASSERT
603 if (VerifyStackAtCalls) {
|