Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Sun, 22 Dec 2002 06:00:36 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Sun, 22 Dec 2002 06:00:36 -0500 Received: from ore.jhcloos.com ([64.240.156.239]:20996 "EHLO ore.jhcloos.com") by vger.kernel.org with ESMTP id ; Sun, 22 Dec 2002 06:00:34 -0500 To: Cc: Linus Torvalds , Ulrich Drepper Subject: Re: Intel P6 vs P7 system call performance References: From: "James H. Cloos Jr." In-Reply-To: Date: 22 Dec 2002 06:08:24 -0500 Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 940 Lines: 23 Linus> The system call entry becomes a simple Linus> call *%gs:constant-offset Linus> Not mmap. No magic system calls. No relinking. Not Linus> _nothing_. One instruction, that's it. I presume *%gs:0x18 is only for shared objects? A na?ve: - asm volatile("call 0xffffe000" + asm volatile("call *%%gs:0x18" in the trivial getppid benchmark code gives a SEGV, since (according to gdb's info all-registers) %gs == 0 when it runs. Is it just that my glibc is too old, or is there a shared vs static difference? -JimC P.S. On a (1 Gig) mobile p3 the getppid bench gives ~333 cycles for int $0x80 and ~215 for call 0xffffe000, before yesterday's push. - 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/