[kgtp] r959 committed - Adding actionx

  • From: kgtp@xxxxxxxxxxxxxx
  • To: kgtp@xxxxxxxxxxxxx
  • Date: Sun, 04 Mar 2012 07:52:48 +0000

Revision: 959
Author:   teawater
Date:     Sat Mar  3 23:51:31 2012
Log:      Adding actionx

http://code.google.com/p/kgtp/source/detail?r=959

Modified:
 /branches/actionx/gtp.c

=======================================
--- /branches/actionx/gtp.c     Sat Mar  3 23:20:48 2012
+++ /branches/actionx/gtp.c     Sat Mar  3 23:51:31 2012
@@ -2841,32 +2841,38 @@
                case 0x02:
                        top += stack[--sp];
                        break;
+
                case op_check_add:
                        if (sp)
                                top += stack[--sp];
                        else
                                goto code_error_out;
                        break;
+
                /* sub */
                case 0x03:
                        top = stack[--sp] - top;
                        break;
+
                case op_check_sub:
                        if (sp)
                                top = stack[--sp] - top;
                        else
                                goto code_error_out;
                        break;
+
                /* mul */
                case 0x04:
                        top *= stack[--sp];
                        break;
+
                case op_check_mul:
                        if (sp)
                                top *= stack[--sp];
                        else
                                goto code_error_out;
                        break;
+
 #ifndef CONFIG_MIPS
                /* div_signed */
                case 0x05:
@@ -2877,6 +2883,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                case op_check_div_signed:
                        if (top && sp) {
                                LONGEST l = (LONGEST) stack[--sp];
@@ -2885,6 +2892,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                /* div_unsigned */
                case 0x06:
                        if (top) {
@@ -2894,6 +2902,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                case op_check_div_unsigned:
                        if (top && sp) {
                                ULONGEST ul = stack[--sp];
@@ -2902,6 +2911,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                /* rem_signed */
                case 0x07:
                        if (top) {
@@ -2911,6 +2921,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                case op_check_rem_signed:
                        if (top && sp) {
                                LONGEST l1 = (LONGEST) stack[--sp];
@@ -2919,6 +2930,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                /* rem_unsigned */
                case 0x08:
                        if (top) {
@@ -2928,6 +2940,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                case op_check_rem_unsigned:
                        if (top && sp) {
                                ULONGEST ul1 = stack[--sp];
@@ -2937,36 +2950,43 @@
                                goto code_error_out;
                        break;
 #endif
+
                /* lsh */
                case 0x09:
                        top = stack[--sp] << top;
                        break;
+
                case op_check_lsh:
                        if (sp)
                                top = stack[--sp] << top;
                        else
                                goto code_error_out;
                        break;
+
                /* rsh_signed */
                case 0x0a:
                        top = ((LONGEST) stack[--sp]) >> top;
                        break;
+
                case op_check_rsh_signed:
                        if (sp)
                                top = ((LONGEST) stack[--sp]) >> top;
                        else
                                goto code_error_out;
                        break;
+
                /* rsh_unsigned */
                case 0x0b:
                        top = stack[--sp] >> top;
                        break;
+
                case op_check_rsh_unsigned:
                        if (sp)
                                top = stack[--sp] >> top;
                        else
                                goto code_error_out;
                        break;
+
                /* trace */
                case 0x0c:
                        --sp;
@@ -2979,6 +2999,7 @@
                        }
                        top = stack[--sp];
                        break;
+
                case op_check_trace:
                        if (sp > 1) {
                                if (gtp_action_memory_read
@@ -2993,6 +3014,7 @@
                        } else
                                goto code_error_out;
                        break;
+
                /* trace_printk */
                case op_trace_printk:
                        if (gtp_action_printk(gts,
@@ -3001,6 +3023,7 @@
                                goto out;
                        top = stack[--sp];
                        break;
+
                /* trace_quick */
                case 0x0d:
                        if (!gts->tpe->have_printk) {
@@ -3011,65 +3034,78 @@
                        }
                        pc++;
                        break;
+
                /* trace_quick_printk */
                case op_trace_quick_printk:
                        if (gtp_action_printk(gts, (ULONGEST) top,
                                                (size_t) ebuf[pc++]))
                                goto out;
                        break;
+
                /* log_not */
                case 0x0e:
                        top = !top;
                        break;
+
                /* bit_and */
                case 0x0f:
                        top &= stack[--sp];
                        break;
+
                case op_check_bit_and:
                        if (sp)
                                top &= stack[--sp];
                        else
                                goto code_error_out;
                        break;
+
                /* bit_or */
                case 0x10:
                        top |= stack[--sp];
                        break;
+
                case op_check_bit_or:
                        if (sp)
                                top |= stack[--sp];
                        else
                                goto code_error_out;
                        break;
+
                /* bit_xor */
                case 0x11:
                        top ^= stack[--sp];
                        break;
+
                case op_check_bit_xor:
                        if (sp)
                                top ^= stack[--sp];
                        else
                                goto code_error_out;
                        break;
+
                /* bit_not */
                case 0x12:
                        top = ~top;
                        break;
+
                /* equal */
                case 0x13:
                        top = (stack[--sp] == top);
                        break;
+
                case op_check_equal:
                        if (sp)
                                top = (stack[--sp] == top);
                        else
                                goto code_error_out;
                        break;
+
                /* less_signed */
                case 0x14:
                        top = (((LONGEST) stack[--sp])
                                < ((LONGEST) top));
                        break;
+
                case op_check_less_signed:
                        if (sp)
                                top = (((LONGEST) stack[--sp])
@@ -3077,16 +3113,19 @@
                        else
                                goto code_error_out;
                        break;
+
                /* less_unsigned */
                case 0x15:
                        top = (stack[--sp] < top);
                        break;
+
                case op_check_less_unsigned:
                        if (sp)
                                top = (stack[--sp] < top);
                        else
                                goto code_error_out;
                        break;
+
                /* ext */
                case 0x16:
                        arg = ebuf[pc++];
@@ -3096,6 +3135,7 @@
                                top = (top ^ mask) - mask;
                        }
                        break;
+
                /* ref8 */
                case 0x17:
                        if (probe_kernel_read
@@ -3104,6 +3144,7 @@
                                goto code_error_out;
                        top = (ULONGEST) cnv.u8.val;
                        break;
+
                /* ref16 */
                case 0x18:
                        if (probe_kernel_read
@@ -3112,6 +3153,7 @@
                                goto code_error_out;
                        top = (ULONGEST) cnv.u16.val;
                        break;
+
                /* ref32 */
                case 0x19:
                        if (probe_kernel_read
@@ -3120,6 +3162,7 @@
                                goto code_error_out;
                        top = (ULONGEST) cnv.u32.val;
                        break;
+
                /* ref64 */
                case 0x1a:
                        if (probe_kernel_read
@@ -3128,6 +3171,7 @@
                                goto code_error_out;
                        top = (ULONGEST) cnv.u64.val;
                        break;
+
                /* if_goto */
                case 0x20:
                        if (top)
@@ -3138,6 +3182,7 @@
                        /* pop */
                        top = stack[--sp];
                        break;
+
                case op_check_if_goto:
                        if (top)
                                pc = (ebuf[pc] << 8)
@@ -3150,21 +3195,25 @@
                        else
                                goto code_error_out;
                        break;
+
                /* goto */
                case 0x21:
                        pc = (ebuf[pc] << 8) + (ebuf[pc + 1]);
                        break;
+
                /* const8 */
                case 0x22:
                        stack[sp++] = top;
                        top = ebuf[pc++];
                        break;
+
                /* const16 */
                case 0x23:
                        stack[sp++] = top;
                        top = ebuf[pc++];
                        top = (top << 8) + ebuf[pc++];
                        break;
+
                /* const32 */
                case 0x24:
                        stack[sp++] = top;
@@ -3173,6 +3222,7 @@
                        top = (top << 8) + ebuf[pc++];
                        top = (top << 8) + ebuf[pc++];
                        break;
+
                /* const64 */
                case 0x25:
                        stack[sp++] = top;
@@ -3185,6 +3235,7 @@
                        top = (top << 8) + ebuf[pc++];
                        top = (top << 8) + ebuf[pc++];
                        break;
+
                /* reg */
                case 0x26:
                        stack[sp++] = top;
@@ -3195,38 +3246,45 @@
                        if (gts->tpe->reason != gtp_stop_normal)
                                goto error_out;
                        break;
+
                /* end */
                case 0x27:
                        if (gts->run)
                                *(gts->run) = (int)top;
                        goto out;
                        break;
+
                /* dup */
                case 0x28:
                        stack[sp++] = top;
                        break;
+
                /* pop */
                case 0x29:
                        top = stack[--sp];
                        break;
+
                case op_check_pop:
                        if (sp)
                                top = stack[--sp];
                        else
                                goto code_error_out;
                        break;
+
                /* zero_ext */
                case 0x2a:
                        arg = ebuf[pc++];
                        if (arg < (sizeof(LONGEST)*8))
                                top &= ((LONGEST) 1 << arg) - 1;
                        break;
+
                /* swap */
                case 0x2b:
                        stack[sp] = top;
                        top = stack[sp - 1];
                        stack[sp - 1] = stack[sp];
                        break;
+
                case op_check_swap:
                        if (sp) {
                                stack[sp] = top;
@@ -3235,21 +3293,17 @@
                        } else
                                goto code_error_out;
                        break;
+
                /* getv */
-               case 0x2c: {
-                               struct gtp_var  *tve;
-
-                               arg = ebuf[pc++];
-                               arg = (arg << 8) + ebuf[pc++];
-
-                               tve = gtp_gtp_var_array_find(arg);
-                               if (!tve)
-                                       goto code_error_out;
-                               stack[sp++] = top;
-
-                               top = gtp_get_var(gts, tve);
-                       }
+               case 0x2c:
+                       arg = ebuf[pc++];
+                       arg = (arg << 8) + ebuf[pc++];
+
+                       stack[sp++] = top;
+
+                       top = gtp_get_var(gts, gtp_gtp_var_array_find(arg));
                        break;
+
                /* getv_sepecial */
                case op_special_getv:
                        arg = ebuf[pc++];
@@ -3257,6 +3311,7 @@
                        stack[sp++] = top;
                        top = gtp_get_var_special(gts, arg);
                        break;
+
                /* setv */
                case 0x2d: {
                                struct gtp_var  *tve;
@@ -3265,8 +3320,6 @@
                                arg = (arg << 8) + ebuf[pc++];

                                tve = gtp_gtp_var_array_find(arg);
-                               if (!tve)
-                                       goto code_error_out;
 #ifdef GTP_PERF_EVENTS
                                if (tve->ptid == pe_tv_en)
                                        gtp_pe_set_en(tve->pts, (int)top);
@@ -3277,54 +3330,48 @@
                                tve->val = (uint64_t)top;
                        }
                        break;
+
                /* setv_sepecial */
                case op_special_setv:
                        arg = ebuf[pc++];
                        arg = (arg << 8) + ebuf[pc++];
                        gtp_set_var_special(gts, arg, top);
                        break;
+
                /* tracev */
                case 0x2e:
                        arg = ebuf[pc++];
                        arg = (arg << 8) + ebuf[pc++];

-                       if (!gts->tpe->have_printk) {
-                               struct gtp_var  *tve;
-
-                               tve = gtp_gtp_var_array_find(arg);
-                               if (!tve)
-                                       goto code_error_out;
-
-                               if (gtp_collect_var(gts, tve)) {
-                                       /* gtp_collect_var will set error
-                                          status with itself if it got
-                                          error. */
-                                       goto out;
-                               }
+                       if (gtp_collect_var(gts, gtp_gtp_var_array_find(arg))) {
+                               /* gtp_collect_var will set error
+                                  status with itself if it got error. */
+                               goto out;
                        }
                        break;
+
                /* tracev_special */
                case op_special_tracev:
                        arg = ebuf[pc++];
                        arg = (arg << 8) + ebuf[pc++];
                        gtp_collect_var_special(gts, arg);
                        break;
+
                /* tracev_printk */
                case op_tracev_printk: {
-                               struct gtp_var  *tve;
-
+                               uint64_t        u64;
                                arg = ebuf[pc++];
                                arg = (arg << 8) + ebuf[pc++];

-                               tve = gtp_gtp_var_array_find(arg);
-                               if (!tve)
-                                       goto code_error_out;
-
-                               if (gtp_action_printk(gts,
-                                                     gtp_get_var(gts, tve),
-                                                     0)) {
+                               if (!GTP_VAR_IS_SPECIAL(arg))
+                                       u64 = gtp_get_var(gts,
+                                                         gtp_gtp_var_array_find
+                                                               (arg));
+                               else
+                                       u64 = gtp_get_var_special(gts, arg);
+                               if (gtp_action_printk(gts, u64, 0)) {
                                        /* gtp_collect_var will set error status
-                                          with itself if it got error. */
+                                               with itself if it got error. */
                                        goto out;
                                }
                        }
@@ -4779,6 +4826,9 @@
                case 0x2e:
                        ebuf[last_trace_pc] = op_tracev_printk;
                        break;
+               case op_special_tracev:
+                       ebuf[last_trace_pc] = op_tracev_printk;
+                       break;
                }
        }


Other related posts:

  • » [kgtp] r959 committed - Adding actionx - kgtp