Re: Performance analysis of Linux Kernel Markers 0.20 for 2.6.17

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux