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]