Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sh3/sh3 cksum128mod: Prepare jump address by 'mova'...



details:   https://anonhg.NetBSD.org/src/rev/e6bac51c58f2
branches:  trunk
changeset: 986292:e6bac51c58f2
user:      rin <rin%NetBSD.org@localhost>
date:      Sat Sep 18 06:31:46 2021 +0000

description:
cksum128mod: Prepare jump address by 'mova', instead of 'mov.l'.

Since both this 'mova' and 'and #imm' above must be used against r0,
we need extra 'mov r0, r3'. However, this should still be good both for
sh3 and sh4:

- For sh3, 'mov.l' at odd half-word address is removed; pipeline hazard
  due to instruction fetch is resolved.

- For sh4, data cache line is no longer assigned for this 'mov.l'.

Also:

- Upcoming __PIC__ support (in order to avoid text relocations when built
  in tests/net/in_cksum) becomes simpler; no need CALL_DATUM_LOCAL() for
  cksum128_tail.

- Shave off 4 bytes from text.

No regression is observed for sh3 (hpcsh) and sh4 (landisk).

diffstat:

 sys/arch/sh3/sh3/cpu_in_cksum.S |  16 ++++++----------
 1 files changed, 6 insertions(+), 10 deletions(-)

diffs (41 lines):

diff -r af3862da68fd -r e6bac51c58f2 sys/arch/sh3/sh3/cpu_in_cksum.S
--- a/sys/arch/sh3/sh3/cpu_in_cksum.S   Sat Sep 18 03:05:19 2021 +0000
+++ b/sys/arch/sh3/sh3/cpu_in_cksum.S   Sat Sep 18 06:31:46 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpu_in_cksum.S,v 1.5 2015/01/06 17:43:16 christos Exp $        */
+/*     $NetBSD: cpu_in_cksum.S,v 1.6 2021/09/18 06:31:46 rin Exp $     */
 
 /*-
  * Copyright (c) 2000 SHIMIZU Ryo <ryo%misakimix.org@localhost>
@@ -34,7 +34,7 @@
 #include <machine/asm.h>
 #include "assym.h"
 
-__KERNEL_RCSID(0, "$NetBSD: cpu_in_cksum.S,v 1.5 2015/01/06 17:43:16 christos Exp $")
+__KERNEL_RCSID(0, "$NetBSD: cpu_in_cksum.S,v 1.6 2021/09/18 06:31:46 rin Exp $")
 
 
 #define        reg_tmp0                r0
@@ -255,18 +255,14 @@
        mov     reg_mlen,reg_tmp0
        and     #124,reg_tmp0
        sub     reg_tmp0,reg_mlen
+       mov     reg_tmp0,reg_tmp3
 
-       mov.l   .L_cksum128_tail_p,reg_tmp3
-       sub     reg_tmp0,reg_tmp3
-       jmp     @reg_tmp3
+       mova    cksum128_tail,reg_tmp0
+       sub     reg_tmp3,reg_tmp0
+       jmp     @reg_tmp0
         clrt
 
        .align  2
-.L_cksum128_tail_p:
-       .long   cksum128_tail
-
-
-       .align  2
 cksum128:
        add     #-128,reg_mlen
        clrt



Home | Main Index | Thread Index | Old Index