]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Remove unnecessary 32-bit code.
authorKris Van Hees <kris.van.hees@oracle.com>
Fri, 19 Jul 2013 22:17:57 +0000 (18:17 -0400)
committerKris Van Hees <kris.van.hees@oracle.com>
Fri, 19 Jul 2013 22:17:57 +0000 (18:17 -0400)
Since DTrace for Linux is only being developed for 64-bit platforms, various
pieces of conditional-controlled code can be removed because they only apply
for 32-bit DTrace implementations.  Note that this does not have anything to
do with (future) support for 32-bit applications runnings and being traced on
a 64-bit host.

Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
dtrace/dtrace_dif.c
dtrace/dtrace_isa.c
dtrace/include/dtrace/dtrace_impl_defines.h

index dc6c970c7820d3dec9fe0a8710d5c5a155124a35..ee8f97b03ddb4802ffcae9e4b9178097839e78bf 100644 (file)
 
 size_t                         dtrace_global_maxsize = 16 * 1024;
 
+/*
+ * This externally visible variable (accessible through the backtick (`)
+ * syntax is provided as a source of well-known, zero-filled memory.  Some
+ * translators use this in their implementation.
+ */
+const char                     dtrace_zero[256] = { 0, };
+
 static uint64_t                        dtrace_vtime_references;
 
 static int dtrace_difo_err(uint_t pc, const char *format, ...)
index 66a95064e44def556590b9d3d2bed7b6feec1f3e..c611aab6e3ad7affe32c739547b34d2b815095de 100644 (file)
@@ -129,13 +129,6 @@ uint64_t dtrace_getarg(int arg, int aframes)
        uintptr_t       *stack;
        int             i;
        uint64_t        val;
-#ifdef __i386__
-       int             regmap[] = {
-                                       REG_EAX,
-                                       REG_EDX,
-                                       REG_ECX
-                                  };
-#else
        int             regmap[] = {
                                        REG_RDI,
                                        REG_RSI,
@@ -144,18 +137,13 @@ uint64_t dtrace_getarg(int arg, int aframes)
                                        REG_R8,
                                        REG_R9
                                   };
-#endif
        int             nreg = sizeof(regmap) / sizeof(regmap[0]) - 1;
 
        for (i = 1; i <= aframes; i++) {
                fp = fp->fr_savfp;
 
                if (fp->fr_savpc == (uintptr_t)dtrace_invop_callsite) {
-#ifdef __i386__
                        /* FIXME */
-#else
-                       /* FIXME */
-#endif
 
                        goto load;
                }
@@ -170,18 +158,16 @@ uint64_t dtrace_getarg(int arg, int aframes)
         */
        arg++;
 
-#ifndef __i386__
        if (arg <= nreg) {
                /*
                 * This should not happen.  If the argument was passed in a
-                * register then it should have been, ...passed in a reguster.
+                * register then it should have been, ...passed in a register.
                 */
                DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
                return 0;
        }
 
        arg -= nreg + 1;
-#endif
 
        stack = (uintptr_t *)&fp[1];
 
@@ -202,51 +188,6 @@ ulong_t dtrace_getreg(struct task_struct *task, uint_t reg)
 {
        struct pt_regs  *rp = task_pt_regs(task);
 
-#ifdef __i386__
-       if (reg > REG_SS) {
-               DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
-               return 0;
-       }
-
-       switch (reg) {
-       case REG_GS:
-       case REG_FS:
-       case REG_ES:
-       case REG_DS:
-       case REG_CS:
-               return rp->cs;
-       case REG_EDI:
-               return rp->di;
-       case REG_ESI:
-               return rp->si;
-       case REG_EBP:
-               return rp->bp;
-       case REG_ESP:
-       case REG_UESP:
-               return rp->sp;
-       case REG_EBX:
-               return rp->bx;
-       case REG_EDX:
-               return rp->dx;
-       case REG_ECX:
-               return rp->cx;
-       case REG_EAX:
-               return rp->ax;
-       case REG_TRAPNO:
-               return rp->orig_ax;
-       case REG_ERR:
-               return rp->di;
-       case REG_EIP:
-               return rp->ip;
-       case REG_EFL:
-               return rp->flags;
-       case REG_SS:
-               return rp->ss;
-       default:
-               DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
-               return 0;
-       }
-#else
        int     regmap[] = {
                                REG_RBX,        /*  0 -> EBX */
                                REG_RCX,        /*  1 -> ECX */
@@ -266,11 +207,11 @@ ulong_t dtrace_getreg(struct task_struct *task, uint_t reg)
                                REG_RSP,        /* 15 -> UESP */
                                REG_SS,         /* 16 -> SS */
                           };
-       if (reg > REG_GS) {
+       if (reg > REG_TRAPNO) {
                /*
                 * Convert register alias index into register mapping index.
                 */
-               reg -= REG_GS + 1;
+               reg -= REG_TRAPNO + 1;
 
                if (reg >= sizeof(regmap) / sizeof(int)) {
                        DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
@@ -295,11 +236,12 @@ ulong_t dtrace_getreg(struct task_struct *task, uint_t reg)
                return task->thread.fs;
        case REG_GS:
                return task->thread.gs;
+       case REG_TRAPNO:
+               return task->thread.trap_nr;
        default:
                DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
                return 0;
        }
-#endif
 }
 
 static void dtrace_sync_func(void)
index 3765321b23b448846d6f5fcfe460dcca646d3a73..b493e97e58852bbe9b84fab900d550559c178b9b 100644 (file)
@@ -164,54 +164,32 @@ typedef enum dtrace_vtime_state {
 /*
  * regset.h information
  */
-#ifdef __i386__
-# define REG_SS                18      /* only stored on a privilege transition */
-# define REG_UESP      17      /* only stored on a privilege transition */
-# define REG_EFL       16
-# define REG_CS                15
-# define REG_EIP       14
-# define REG_ERR       13
-# define REG_TRAPNO    12
-# define REG_EAX       11
-# define REG_ECX       10
-# define REG_EDX       9
-# define REG_EBX       8
-# define REG_ESP       7
-# define REG_EBP       6
-# define REG_ESI       5
-# define REG_EDI       4
-# define REG_DS                3
-# define REG_ES                2
-# define REG_FS                1
-# define REG_GS                0
-#else
-# define REG_GS                24
-# define REG_FS                23
-# define REG_ES                22
-# define REG_DS                21
-# define REG_SS                20
-# define REG_RSP       19
-# define REG_RFL       18
-# define REG_CS                17
-# define REG_RIP       16
-# define REG_ERR       15
-# define REG_TRAPNO    15
-# define REG_RDI       14
-# define REG_RSI       13
-# define REG_RDX       12
-# define REG_RCX       11
-# define REG_RAX       10
-# define REG_R8                9
-# define REG_R9                8
-# define REG_R10       7
-# define REG_R11       6
-# define REG_RBX       5
-# define REG_RBP       4
-# define REG_R12       3
-# define REG_R13       2
-# define REG_R14       1
-# define REG_R15       0
-#endif
+#define REG_TRAPNO     25
+#define REG_GS         24
+#define REG_FS         23
+#define REG_ES         22
+#define REG_DS         21
+#define REG_SS         20
+#define REG_RSP                19
+#define REG_RFL                18
+#define REG_CS         17
+#define REG_RIP                16
+#define REG_ERR                15
+#define REG_RDI                14
+#define REG_RSI                13
+#define REG_RDX                12
+#define REG_RCX                11
+#define REG_RAX                10
+#define REG_R8         9
+#define REG_R9         8
+#define REG_R10                7
+#define REG_R11                6
+#define REG_RBX                5
+#define REG_RBP                4
+#define REG_R12                3
+#define REG_R13                2
+#define REG_R14                1
+#define REG_R15                0
 
 #if defined(__i386__) || defined(__x86_64__)
 # define DTRACE_INVOP_PUSHL_EBP        1