Messages in this thread | | | Date | Sun, 8 Oct 2006 12:40:29 -0700 (PDT) | From | dean gaudet <> | Subject | Re: 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/
| |