lkml.org 
[lkml]   [2006]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Performance analysis of Linux Kernel Markers 0.20 for 2.6.17
    On Sun, 8 Oct 2006, dean gaudet wrote:

    > On Sat, 30 Sep 2006, Mathieu Desnoyers wrote:
    >
    > > - Optimized
    > >
    > > static int my_open(struct inode *inode, struct file *file)
    > > {
    > > 0: 55 push %ebp
    > > 1: 89 e5 mov %esp,%ebp
    > > 3: 83 ec 0c sub $0xc,%esp
    > > MARK(subsys_mark1, "%d %p", 1, NULL);
    > > 6: b0 00 mov $0x0,%al <-- immediate load 0 in al
    > > 8: 84 c0 test %al,%al
    > > a: 75 07 jne 13 <my_open+0x13>
    >
    > why not replace the mov+test with "xor %eax,%eax" and then change the 0x75
    > to a 0x74 to change from jne to je when you want to enable the marker?
    >
    > i.e. disabled:
    >
    > 31 c0 xor %eax,%eax
    > 75 07 jne 13
    >
    > enabled:
    >
    > 31 c0 xor %eax,%eax
    > 74 07 je 13

    actually... why even destroy the register... i bet this is the best
    choice:

    39 c0 cmp %eax,%eax
    75 07 jne 13

    that satisfies the macro-op fusion rules on core2 as well... now you
    shouldn't even ask gcc for a register you should just hardwire %eax so it
    doesn't get confused (probably need to tell it "cc" is modified).

    -dean
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-10-08 21:43    [W:0.020 / U:153.792 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site