Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(910)

Side by Side Diff: src/arm/simulator-arm.cc

Issue 385069: Fix some style issues in the ARM code.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 // All registers are initialized to zero to start with. 428 // All registers are initialized to zero to start with.
429 for (int i = 0; i < num_registers; i++) { 429 for (int i = 0; i < num_registers; i++) {
430 registers_[i] = 0; 430 registers_[i] = 0;
431 } 431 }
432 n_flag_ = false; 432 n_flag_ = false;
433 z_flag_ = false; 433 z_flag_ = false;
434 c_flag_ = false; 434 c_flag_ = false;
435 v_flag_ = false; 435 v_flag_ = false;
436 436
437 // Initializing VFP registers. 437 // Initializing VFP registers.
438 // All registers are initialized to zero to start with. 438 // All registers are initialized to zero to start with
439 // even though s_registers_ & d_registers_ share the same 439 // even though s_registers_ & d_registers_ share the same
440 // physical registers in the target 440 // physical registers in the target.
441 for (int i = 0; i < num_s_registers; i++) { 441 for (int i = 0; i < num_s_registers; i++) {
442 vfp_register[i] = 0; 442 vfp_register[i] = 0;
443 } 443 }
444 n_flag_FPSCR_ = false; 444 n_flag_FPSCR_ = false;
445 z_flag_FPSCR_ = false; 445 z_flag_FPSCR_ = false;
446 c_flag_FPSCR_ = false; 446 c_flag_FPSCR_ = false;
447 v_flag_FPSCR_ = false; 447 v_flag_FPSCR_ = false;
448 448
449 inv_op_vfp_flag_ = false; 449 inv_op_vfp_flag_ = false;
450 div_zero_vfp_flag_ = false; 450 div_zero_vfp_flag_ = false;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 pc_modified_ = true; 560 pc_modified_ = true;
561 registers_[pc] = value; 561 registers_[pc] = value;
562 } 562 }
563 563
564 564
565 // Raw access to the PC register without the special adjustment when reading. 565 // Raw access to the PC register without the special adjustment when reading.
566 int32_t Simulator::get_pc() const { 566 int32_t Simulator::get_pc() const {
567 return registers_[pc]; 567 return registers_[pc];
568 } 568 }
569 569
570
570 // Getting from and setting into VFP registers. 571 // Getting from and setting into VFP registers.
571 void Simulator::set_s_register(int sreg, unsigned int value) { 572 void Simulator::set_s_register(int sreg, unsigned int value) {
572 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 573 ASSERT((sreg >= 0) && (sreg < num_s_registers));
573 vfp_register[sreg] = value; 574 vfp_register[sreg] = value;
574 } 575 }
575 576
577
576 unsigned int Simulator::get_s_register(int sreg) const { 578 unsigned int Simulator::get_s_register(int sreg) const {
577 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 579 ASSERT((sreg >= 0) && (sreg < num_s_registers));
578 return vfp_register[sreg]; 580 return vfp_register[sreg];
579 } 581 }
580 582
583
581 void Simulator::set_s_register_from_float(int sreg, const float flt) { 584 void Simulator::set_s_register_from_float(int sreg, const float flt) {
582 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 585 ASSERT((sreg >= 0) && (sreg < num_s_registers));
583 // Read the bits from the single precision floating point value 586 // Read the bits from the single precision floating point value
584 // into the unsigned integer element of vfp_register[] given by index=sreg. 587 // into the unsigned integer element of vfp_register[] given by index=sreg.
585 char buffer[sizeof(vfp_register[0])]; 588 char buffer[sizeof(vfp_register[0])];
586 memcpy(buffer, &flt, sizeof(vfp_register[0])); 589 memcpy(buffer, &flt, sizeof(vfp_register[0]));
587 memcpy(&vfp_register[sreg], buffer, sizeof(vfp_register[0])); 590 memcpy(&vfp_register[sreg], buffer, sizeof(vfp_register[0]));
588 } 591 }
589 592
593
590 void Simulator::set_s_register_from_sinteger(int sreg, const int sint) { 594 void Simulator::set_s_register_from_sinteger(int sreg, const int sint) {
591 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 595 ASSERT((sreg >= 0) && (sreg < num_s_registers));
592 // Read the bits from the integer value 596 // Read the bits from the integer value into the unsigned integer element of
593 // into the unsigned integer element of vfp_register[] given by index=sreg. 597 // vfp_register[] given by index=sreg.
594 char buffer[sizeof(vfp_register[0])]; 598 char buffer[sizeof(vfp_register[0])];
595 memcpy(buffer, &sint, sizeof(vfp_register[0])); 599 memcpy(buffer, &sint, sizeof(vfp_register[0]));
596 memcpy(&vfp_register[sreg], buffer, sizeof(vfp_register[0])); 600 memcpy(&vfp_register[sreg], buffer, sizeof(vfp_register[0]));
597 } 601 }
598 602
603
599 void Simulator::set_d_register_from_double(int dreg, const double& dbl) { 604 void Simulator::set_d_register_from_double(int dreg, const double& dbl) {
600 ASSERT((dreg >= 0) && (dreg < num_d_registers)); 605 ASSERT((dreg >= 0) && (dreg < num_d_registers));
601 // Read the bits from the double precision floating point value 606 // Read the bits from the double precision floating point value into the two
602 // into the two consecutive unsigned integer elements of vfp_register[] 607 // consecutive unsigned integer elements of vfp_register[] given by index
603 // given by index 2*sreg and 2*sreg+1. 608 // 2*sreg and 2*sreg+1.
604 char buffer[2 * sizeof(vfp_register[0])]; 609 char buffer[2 * sizeof(vfp_register[0])];
605 memcpy(buffer, &dbl, 2 * sizeof(vfp_register[0])); 610 memcpy(buffer, &dbl, 2 * sizeof(vfp_register[0]));
606 #ifndef BIG_ENDIAN_FLOATING_POINT 611 #ifndef BIG_ENDIAN_FLOATING_POINT
607 memcpy(&vfp_register[dreg * 2], buffer, 2 * sizeof(vfp_register[0])); 612 memcpy(&vfp_register[dreg * 2], buffer, 2 * sizeof(vfp_register[0]));
608 #else 613 #else
609 memcpy(&vfp_register[dreg * 2], &buffer[4], sizeof(vfp_register[0])); 614 memcpy(&vfp_register[dreg * 2], &buffer[4], sizeof(vfp_register[0]));
610 memcpy(&vfp_register[dreg * 2 + 1], &buffer[0], sizeof(vfp_register[0])); 615 memcpy(&vfp_register[dreg * 2 + 1], &buffer[0], sizeof(vfp_register[0]));
611 #endif 616 #endif
612 } 617 }
613 618
619
614 float Simulator::get_float_from_s_register(int sreg) { 620 float Simulator::get_float_from_s_register(int sreg) {
615 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 621 ASSERT((sreg >= 0) && (sreg < num_s_registers));
616 622
617 float sm_val = 0.0; 623 float sm_val = 0.0;
618 // Read the bits from the unsigned integer vfp_register[] array 624 // Read the bits from the unsigned integer vfp_register[] array
619 // into the single precision floating point value and return it. 625 // into the single precision floating point value and return it.
620 char buffer[sizeof(vfp_register[0])]; 626 char buffer[sizeof(vfp_register[0])];
621 memcpy(buffer, &vfp_register[sreg], sizeof(vfp_register[0])); 627 memcpy(buffer, &vfp_register[sreg], sizeof(vfp_register[0]));
622 memcpy(&sm_val, buffer, sizeof(vfp_register[0])); 628 memcpy(&sm_val, buffer, sizeof(vfp_register[0]));
623 return(sm_val); 629 return(sm_val);
624 } 630 }
625 631
632
626 int Simulator::get_sinteger_from_s_register(int sreg) { 633 int Simulator::get_sinteger_from_s_register(int sreg) {
627 ASSERT((sreg >= 0) && (sreg < num_s_registers)); 634 ASSERT((sreg >= 0) && (sreg < num_s_registers));
628 635
629 int sm_val = 0; 636 int sm_val = 0;
630 // Read the bits from the unsigned integer vfp_register[] array 637 // Read the bits from the unsigned integer vfp_register[] array
631 // into the single precision floating point value and return it. 638 // into the single precision floating point value and return it.
632 char buffer[sizeof(vfp_register[0])]; 639 char buffer[sizeof(vfp_register[0])];
633 memcpy(buffer, &vfp_register[sreg], sizeof(vfp_register[0])); 640 memcpy(buffer, &vfp_register[sreg], sizeof(vfp_register[0]));
634 memcpy(&sm_val, buffer, sizeof(vfp_register[0])); 641 memcpy(&sm_val, buffer, sizeof(vfp_register[0]));
635 return(sm_val); 642 return(sm_val);
636 } 643 }
637 644
645
638 double Simulator::get_double_from_d_register(int dreg) { 646 double Simulator::get_double_from_d_register(int dreg) {
639 ASSERT((dreg >= 0) && (dreg < num_d_registers)); 647 ASSERT((dreg >= 0) && (dreg < num_d_registers));
640 648
641 double dm_val = 0.0; 649 double dm_val = 0.0;
642 // Read the bits from the unsigned integer vfp_register[] array 650 // Read the bits from the unsigned integer vfp_register[] array
643 // into the double precision floating point value and return it. 651 // into the double precision floating point value and return it.
644 char buffer[2 * sizeof(vfp_register[0])]; 652 char buffer[2 * sizeof(vfp_register[0])];
645 #ifndef BIG_ENDIAN_FLOATING_POINT 653 #ifdef BIG_ENDIAN_FLOATING_POINT
646 memcpy(buffer, &vfp_register[2 * dreg], 2 * sizeof(vfp_register[0]));
647 #else
648 memcpy(&buffer[0], &vfp_register[2 * dreg + 1], sizeof(vfp_register[0])); 654 memcpy(&buffer[0], &vfp_register[2 * dreg + 1], sizeof(vfp_register[0]));
649 memcpy(&buffer[4], &vfp_register[2 * dreg], sizeof(vfp_register[0])); 655 memcpy(&buffer[4], &vfp_register[2 * dreg], sizeof(vfp_register[0]));
656 #else
657 memcpy(buffer, &vfp_register[2 * dreg], 2 * sizeof(vfp_register[0]));
650 #endif 658 #endif
651 memcpy(&dm_val, buffer, 2 * sizeof(vfp_register[0])); 659 memcpy(&dm_val, buffer, 2 * sizeof(vfp_register[0]));
652 return(dm_val); 660 return(dm_val);
653 } 661 }
654 662
655 663
656 // For use in calls that take two double values, constructed from r0, r1, r2 664 // For use in calls that take two double values, constructed from r0, r1, r2
657 // and r3. 665 // and r3.
658 void Simulator::GetFpArgs(double* x, double* y) { 666 void Simulator::GetFpArgs(double* x, double* y) {
659 // We use a char buffer to get around the strict-aliasing rules which 667 // We use a char buffer to get around the strict-aliasing rules which
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 && ((left < 0 && alu_out >= 0) || (left >= 0 && alu_out < 0)); 880 && ((left < 0 && alu_out >= 0) || (left >= 0 && alu_out < 0));
873 } else { 881 } else {
874 // operands have different signs 882 // operands have different signs
875 overflow = ((left < 0 && right >= 0) || (left >= 0 && right < 0)) 883 overflow = ((left < 0 && right >= 0) || (left >= 0 && right < 0))
876 // and first operand and result have different signs 884 // and first operand and result have different signs
877 && ((left < 0 && alu_out >= 0) || (left >= 0 && alu_out < 0)); 885 && ((left < 0 && alu_out >= 0) || (left >= 0 && alu_out < 0));
878 } 886 }
879 return overflow; 887 return overflow;
880 } 888 }
881 889
890
882 // Support for VFP comparisons. 891 // Support for VFP comparisons.
883 void Simulator::Compute_FPSCR_Flags(double val1, double val2) { 892 void Simulator::Compute_FPSCR_Flags(double val1, double val2) {
884 // All Non-Nan cases 893 // All non-NaN cases.
885 if (val1 == val2) { 894 if (val1 == val2) {
886 n_flag_FPSCR_ = false; 895 n_flag_FPSCR_ = false;
887 z_flag_FPSCR_ = true; 896 z_flag_FPSCR_ = true;
888 c_flag_FPSCR_ = true; 897 c_flag_FPSCR_ = true;
889 v_flag_FPSCR_ = false; 898 v_flag_FPSCR_ = false;
890 } else if (val1 < val2) { 899 } else if (val1 < val2) {
891 n_flag_FPSCR_ = true; 900 n_flag_FPSCR_ = true;
892 z_flag_FPSCR_ = false; 901 z_flag_FPSCR_ = false;
893 c_flag_FPSCR_ = false; 902 c_flag_FPSCR_ = false;
894 v_flag_FPSCR_ = false; 903 v_flag_FPSCR_ = false;
895 } else { 904 } else {
896 // Case when (val1 > val2). 905 // Case when (val1 > val2).
897 n_flag_FPSCR_ = false; 906 n_flag_FPSCR_ = false;
898 z_flag_FPSCR_ = false; 907 z_flag_FPSCR_ = false;
899 c_flag_FPSCR_ = true; 908 c_flag_FPSCR_ = true;
900 v_flag_FPSCR_ = false; 909 v_flag_FPSCR_ = false;
901 } 910 }
902 } 911 }
903 912
904 913
905 void Simulator::Copy_FPSCR_to_APSR() { 914 void Simulator::Copy_FPSCR_to_APSR() {
906 n_flag_ = n_flag_FPSCR_; 915 n_flag_ = n_flag_FPSCR_;
907 z_flag_ = z_flag_FPSCR_; 916 z_flag_ = z_flag_FPSCR_;
908 c_flag_ = c_flag_FPSCR_; 917 c_flag_ = c_flag_FPSCR_;
909 v_flag_ = v_flag_FPSCR_; 918 v_flag_ = v_flag_FPSCR_;
910 } 919 }
911 920
912 921
913
914 // Addressing Mode 1 - Data-processing operands: 922 // Addressing Mode 1 - Data-processing operands:
915 // Get the value based on the shifter_operand with register. 923 // Get the value based on the shifter_operand with register.
916 int32_t Simulator::GetShiftRm(Instr* instr, bool* carry_out) { 924 int32_t Simulator::GetShiftRm(Instr* instr, bool* carry_out) {
917 Shift shift = instr->ShiftField(); 925 Shift shift = instr->ShiftField();
918 int shift_amount = instr->ShiftAmountField(); 926 int shift_amount = instr->ShiftAmountField();
919 int32_t result = get_register(instr->RmField()); 927 int32_t result = get_register(instr->RmField());
920 if (instr->Bit(4) == 0) { 928 if (instr->Bit(4) == 0) {
921 // by immediate 929 // by immediate
922 if ((shift == ROR) && (shift_amount == 0)) { 930 if ((shift == ROR) && (shift_amount == 0)) {
923 UNIMPLEMENTED(); 931 UNIMPLEMENTED();
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 hi_res = static_cast<int32_t>(result >> 32); 1294 hi_res = static_cast<int32_t>(result >> 32);
1287 lo_res = static_cast<int32_t>(result & 0xffffffff); 1295 lo_res = static_cast<int32_t>(result & 0xffffffff);
1288 } 1296 }
1289 set_register(rd_lo, lo_res); 1297 set_register(rd_lo, lo_res);
1290 set_register(rd_hi, hi_res); 1298 set_register(rd_hi, hi_res);
1291 if (instr->HasS()) { 1299 if (instr->HasS()) {
1292 UNIMPLEMENTED(); 1300 UNIMPLEMENTED();
1293 } 1301 }
1294 } 1302 }
1295 } else { 1303 } else {
1296 UNIMPLEMENTED(); // not used by V8 1304 UNIMPLEMENTED(); // Not used by V8.
1297 } 1305 }
1298 } else { 1306 } else {
1299 // extra load/store instructions 1307 // extra load/store instructions
1300 int rd = instr->RdField(); 1308 int rd = instr->RdField();
1301 int rn = instr->RnField(); 1309 int rn = instr->RnField();
1302 int32_t rn_val = get_register(rn); 1310 int32_t rn_val = get_register(rn);
1303 int32_t addr = 0; 1311 int32_t addr = 0;
1304 if (instr->Bit(22) == 0) { 1312 if (instr->Bit(22) == 0) {
1305 int rm = instr->RmField(); 1313 int rm = instr->RmField();
1306 int32_t rm_val = get_register(rm); 1314 int32_t rm_val = get_register(rm);
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 Compute_FPSCR_Flags(dd_value, dm_value); 1953 Compute_FPSCR_Flags(dd_value, dm_value);
1946 } else if ((instr->Bits(23, 20) == 0xF) && 1954 } else if ((instr->Bits(23, 20) == 0xF) &&
1947 (instr->Bits(19, 16) == 0x1) && 1955 (instr->Bits(19, 16) == 0x1) &&
1948 (instr->Bits(11, 8) == 0xA) && 1956 (instr->Bits(11, 8) == 0xA) &&
1949 (instr->Bits(7, 5) == 0x0) && 1957 (instr->Bits(7, 5) == 0x0) &&
1950 (instr->Bit(4) == 0x1) && 1958 (instr->Bit(4) == 0x1) &&
1951 (instr->Bits(3, 0) == 0x0)) { 1959 (instr->Bits(3, 0) == 0x0)) {
1952 if (instr->Bits(15, 12) == 0xF) 1960 if (instr->Bits(15, 12) == 0xF)
1953 Copy_FPSCR_to_APSR(); 1961 Copy_FPSCR_to_APSR();
1954 else 1962 else
1955 UNIMPLEMENTED(); // not used by V8 now 1963 UNIMPLEMENTED(); // Not used by V8.
1956 } else { 1964 } else {
1957 UNIMPLEMENTED(); // not used by V8 now 1965 UNIMPLEMENTED(); // Not used by V8.
1958 } 1966 }
1959 } else if (instr->Bit(21) == 1) { 1967 } else if (instr->Bit(21) == 1) {
1960 if ((instr->Bit(20) == 0x1) && 1968 if ((instr->Bit(20) == 0x1) &&
1961 (instr->Bits(11, 9) == 0x5) && 1969 (instr->Bits(11, 9) == 0x5) &&
1962 (instr->Bit(8) == 0x1) && 1970 (instr->Bit(8) == 0x1) &&
1963 (instr->Bit(6) == 0) && 1971 (instr->Bit(6) == 0) &&
1964 (instr->Bit(4) == 0)) { 1972 (instr->Bit(4) == 0)) {
1965 double dn_value = get_double_from_d_register(vn); 1973 double dn_value = get_double_from_d_register(vn);
1966 double dm_value = get_double_from_d_register(vm); 1974 double dm_value = get_double_from_d_register(vm);
1967 double dd_value = dn_value + dm_value; 1975 double dd_value = dn_value + dm_value;
(...skipping 10 matching lines...) Expand all
1978 } else if ((instr->Bit(20) == 0x0) && 1986 } else if ((instr->Bit(20) == 0x0) &&
1979 (instr->Bits(11, 9) == 0x5) && 1987 (instr->Bits(11, 9) == 0x5) &&
1980 (instr->Bit(8) == 0x1) && 1988 (instr->Bit(8) == 0x1) &&
1981 (instr->Bit(6) == 0) && 1989 (instr->Bit(6) == 0) &&
1982 (instr->Bit(4) == 0)) { 1990 (instr->Bit(4) == 0)) {
1983 double dn_value = get_double_from_d_register(vn); 1991 double dn_value = get_double_from_d_register(vn);
1984 double dm_value = get_double_from_d_register(vm); 1992 double dm_value = get_double_from_d_register(vm);
1985 double dd_value = dn_value * dm_value; 1993 double dd_value = dn_value * dm_value;
1986 set_d_register_from_double(vd, dd_value); 1994 set_d_register_from_double(vd, dd_value);
1987 } else { 1995 } else {
1988 UNIMPLEMENTED(); // not used by V8 now 1996 UNIMPLEMENTED(); // Not used by V8.
1989 } 1997 }
1990 } else { 1998 } else {
1991 if ((instr->Bit(20) == 0x0) && 1999 if ((instr->Bit(20) == 0x0) &&
1992 (instr->Bits(11, 8) == 0xA) && 2000 (instr->Bits(11, 8) == 0xA) &&
1993 (instr->Bits(6, 5) == 0x0) && 2001 (instr->Bits(6, 5) == 0x0) &&
1994 (instr->Bit(4) == 1) && 2002 (instr->Bit(4) == 1) &&
1995 (instr->Bits(3, 0) == 0x0)) { 2003 (instr->Bits(3, 0) == 0x0)) {
1996 int32_t rs_val = get_register(rt); 2004 int32_t rs_val = get_register(rt);
1997 set_s_register_from_sinteger(((vn<<1) | instr->NField()), rs_val); 2005 set_s_register_from_sinteger(((vn<<1) | instr->NField()), rs_val);
1998 } else if ((instr->Bit(20) == 0x1) && 2006 } else if ((instr->Bit(20) == 0x1) &&
1999 (instr->Bits(11, 8) == 0xA) && 2007 (instr->Bits(11, 8) == 0xA) &&
2000 (instr->Bits(6, 5) == 0x0) && 2008 (instr->Bits(6, 5) == 0x0) &&
2001 (instr->Bit(4) == 1) && 2009 (instr->Bit(4) == 1) &&
2002 (instr->Bits(3, 0) == 0x0)) { 2010 (instr->Bits(3, 0) == 0x0)) {
2003 int32_t int_value = get_sinteger_from_s_register(((vn<<1) | 2011 int32_t int_value = get_sinteger_from_s_register(((vn<<1) |
2004 instr->NField())); 2012 instr->NField()));
2005 set_register(rt, int_value); 2013 set_register(rt, int_value);
2006 } else { 2014 } else {
2007 UNIMPLEMENTED(); // not used by V8 now 2015 UNIMPLEMENTED(); // Not used by V8.
2008 } 2016 }
2009 } 2017 }
2010 } 2018 }
2011 2019
2012 2020
2013
2014 // void Simulator::DecodeType6CoprocessorIns(Instr* instr) 2021 // void Simulator::DecodeType6CoprocessorIns(Instr* instr)
2015 // Decode Type 6 coprocessor instructions 2022 // Decode Type 6 coprocessor instructions.
2016 // Dm = fmdrr(Rt, Rt2) 2023 // Dm = fmdrr(Rt, Rt2)
2017 // <Rt, Rt2> = fmrrd(Dm) 2024 // <Rt, Rt2> = fmrrd(Dm)
2018 void Simulator::DecodeType6CoprocessorIns(Instr* instr) { 2025 void Simulator::DecodeType6CoprocessorIns(Instr* instr) {
2019 ASSERT((instr->TypeField() == 6)); 2026 ASSERT((instr->TypeField() == 6));
2020 2027
2021 int rt = instr->RtField(); 2028 int rt = instr->RtField();
2022 int rn = instr->RnField(); 2029 int rn = instr->RnField();
2023 int vm = instr->VmField(); 2030 int vm = instr->VmField();
2024 2031
2025 if (instr->Bit(23) == 1) { 2032 if (instr->Bit(23) == 1) {
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
2248 uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp); 2255 uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp);
2249 uintptr_t address = *stack_slot; 2256 uintptr_t address = *stack_slot;
2250 set_register(sp, current_sp + sizeof(uintptr_t)); 2257 set_register(sp, current_sp + sizeof(uintptr_t));
2251 return address; 2258 return address;
2252 } 2259 }
2253 2260
2254 2261
2255 } } // namespace assembler::arm 2262 } } // namespace assembler::arm
2256 2263
2257 #endif // !defined(__arm__) 2264 #endif // !defined(__arm__)
OLDNEW
« src/arm/codegen-arm.cc ('K') | « src/arm/simulator-arm.h ('k') | src/flag-definitions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698