Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/i386/i386 Andrew Doran points out that _ALIGN_TEXT ...



details:   https://anonhg.NetBSD.org/src/rev/485163367f9e
branches:  trunk
changeset: 754601:485163367f9e
user:      dyoung <dyoung%NetBSD.org@localhost>
date:      Wed May 05 17:42:19 2010 +0000

description:
Andrew Doran points out that _ALIGN_TEXT is unused, and the processor
may be able to "pair or pipeline" instructions if I load the
bus_space_tag pointer nearer the top of the functions.  Get rid of the
_ALIGN_TEXT definition, and load the pointer earlier.

diffstat:

 sys/arch/i386/i386/busfunc.S |  44 ++++++++++++++++++++------------------------
 1 files changed, 20 insertions(+), 24 deletions(-)

diffs (221 lines):

diff -r 2a14897ce0ed -r 485163367f9e sys/arch/i386/i386/busfunc.S
--- a/sys/arch/i386/i386/busfunc.S      Wed May 05 17:12:29 2010 +0000
+++ b/sys/arch/i386/i386/busfunc.S      Wed May 05 17:42:19 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: busfunc.S,v 1.6 2010/04/28 19:17:03 dyoung Exp $       */
+/*     $NetBSD: busfunc.S,v 1.7 2010/05/05 17:42:19 dyoung Exp $       */
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -30,22 +30,18 @@
  */
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: busfunc.S,v 1.6 2010/04/28 19:17:03 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: busfunc.S,v 1.7 2010/05/05 17:42:19 dyoung Exp $");
 
 #include "assym.h"
 
-/* XXX */
-#undef _ALIGN_TEXT
-#define        _ALIGN_TEXT     .align 16
-
 /*
  * uint8_t bus_space_read_1(bus_space_tag_t tag, bus_space_handle_t bsh,
  *    bus_size_t offset);
  */
 ENTRY(bus_space_read_1)
+       movl    4(%esp), %eax
        movl    8(%esp), %edx
        addl    12(%esp), %edx
-       movl    4(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        je      1f
        movzbl  (%edx), %eax
@@ -60,9 +56,9 @@
  *    bus_size_t offset);
  */
 ENTRY(bus_space_read_2)
+       movl    4(%esp), %eax
        movl    8(%esp), %edx
        addl    12(%esp), %edx
-       movl    4(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        je      1f
        movzwl  (%edx), %eax
@@ -77,9 +73,9 @@
  *    bus_size_t offset);
  */
 ENTRY(bus_space_read_4)
+       movl    4(%esp), %eax
        movl    8(%esp), %edx
        addl    12(%esp), %edx
-       movl    4(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        je      1f
        movl    (%edx), %eax
@@ -97,9 +93,9 @@
  *    bus_size_t offset, uint8_t value);
  */
 ENTRY(bus_space_write_1)
+       movl    4(%esp), %eax
        movl    8(%esp), %edx
        addl    12(%esp), %edx
-       movl    4(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    16(%esp), %eax
        je      1f
@@ -114,9 +110,9 @@
  *    bus_size_t offset, uint16_t value);
  */
 ENTRY(bus_space_write_2)
+       movl    4(%esp), %eax
        movl    8(%esp), %edx
        addl    12(%esp), %edx
-       movl    4(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    16(%esp), %eax
        je      1f
@@ -131,9 +127,9 @@
  *     bus_size_t offset, uint32_t value);
  */
 ENTRY(bus_space_write_4)
+       movl    4(%esp), %eax
        movl    8(%esp), %edx
        addl    12(%esp), %edx
-       movl    4(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    16(%esp), %eax
        je      1f
@@ -153,9 +149,9 @@
  */
 ENTRY(bus_space_read_multi_1)
        pushl   %edi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %edi
        movl    24(%esp), %ecx
@@ -180,9 +176,9 @@
  */
 ENTRY(bus_space_read_multi_2)
        pushl   %edi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %edi
        movl    24(%esp), %ecx
@@ -207,9 +203,9 @@
  */
 ENTRY(bus_space_read_multi_4)
        pushl   %edi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %edi
        movl    24(%esp), %ecx
@@ -238,9 +234,9 @@
  */
 ENTRY(bus_space_write_multi_1)
        pushl   %esi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %esi
        movl    24(%esp), %ecx
@@ -265,9 +261,9 @@
  */
 ENTRY(bus_space_write_multi_2)
        pushl   %esi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %esi
        movl    24(%esp), %ecx
@@ -292,9 +288,9 @@
  */
 ENTRY(bus_space_write_multi_4)
        pushl   %esi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %esi
        movl    24(%esp), %ecx
@@ -323,9 +319,9 @@
  */
 ENTRY(bus_space_read_region_1)
        pushl   %edi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %edi
        movl    24(%esp), %ecx
@@ -353,9 +349,9 @@
  */
 ENTRY(bus_space_read_region_2)
        pushl   %edi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %edi
        movl    24(%esp), %ecx
@@ -383,9 +379,9 @@
  */
 ENTRY(bus_space_read_region_4)
        pushl   %edi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %edi
        movl    24(%esp), %ecx
@@ -417,9 +413,9 @@
  */
 ENTRY(bus_space_write_region_1)
        pushl   %esi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %esi
        movl    24(%esp), %ecx
@@ -447,9 +443,9 @@
  */
 ENTRY(bus_space_write_region_2)
        pushl   %esi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %esi
        movl    24(%esp), %ecx
@@ -477,9 +473,9 @@
  */
 ENTRY(bus_space_write_region_4)
        pushl   %esi
+       movl    8(%esp), %eax
        movl    12(%esp), %edx
        addl    16(%esp), %edx
-       movl    8(%esp), %eax
        cmpl    $X86_BUS_SPACE_IO, BST_TYPE(%eax)
        movl    20(%esp), %esi
        movl    24(%esp), %ecx



Home | Main Index | Thread Index | Old Index