Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/arch/arm/lib/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  io-readsb.S   Sprache: Sparc

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *  linux/arch/arm/lib/io-readsb.S
 *
 *  Copyright (C) 1995-2000 Russell King
 */

#include <linux/linkage.h>
#include <asm/assembler.h>

.Linsb_align: rsb ip, ip, #4
  cmp ip, r2
  movgt ip, r2
  cmp ip, #2
  ldrb r3, [r0]
  strb r3, [r1], #1
  ldrbge r3, [r0]
  strbge r3, [r1], #1
  ldrbgt r3, [r0]
  strbgt r3, [r1], #1
  subs r2, r2, ip
  bne .Linsb_aligned

ENTRY(__raw_readsb)
  teq r2, #0  @ do we have to check for the zero len?
  reteq lr
  ands ip, r1, #3
  bne .Linsb_align

.Linsb_aligned: stmfd sp!, {r4 - r6, lr}

  subs r2, r2, #16
  bmi .Linsb_no_16

.Linsb_16_lp: ldrb r3, [r0]
  ldrb r4, [r0]
  ldrb r5, [r0]
  mov r3, r3,     put_byte_0
  ldrb r6, [r0]
  orr r3, r3, r4, put_byte_1
  ldrb r4, [r0]
  orr r3, r3, r5, put_byte_2
  ldrb r5, [r0]
  orr r3, r3, r6, put_byte_3
  ldrb r6, [r0]
  mov r4, r4,     put_byte_0
  ldrb ip, [r0]
  orr r4, r4, r5, put_byte_1
  ldrb r5, [r0]
  orr r4, r4, r6, put_byte_2
  ldrb r6, [r0]
  orr r4, r4, ip, put_byte_3
  ldrb ip, [r0]
  mov r5, r5,     put_byte_0
  ldrb lr, [r0]
  orr r5, r5, r6, put_byte_1
  ldrb r6, [r0]
  orr r5, r5, ip, put_byte_2
  ldrb ip, [r0]
  orr r5, r5, lr, put_byte_3
  ldrb lr, [r0]
  mov r6, r6,     put_byte_0
  orr r6, r6, ip, put_byte_1
  ldrb ip, [r0]
  orr r6, r6, lr, put_byte_2
  orr r6, r6, ip, put_byte_3
  stmia r1!, {r3 - r6}

  subs r2, r2, #16
  bpl .Linsb_16_lp

  tst r2, #15
  ldmfdeq sp!, {r4 - r6, pc}

.Linsb_no_16: tst r2, #8
  beq .Linsb_no_8

  ldrb r3, [r0]
  ldrb r4, [r0]
  ldrb r5, [r0]
  mov r3, r3,     put_byte_0
  ldrb r6, [r0]
  orr r3, r3, r4, put_byte_1
  ldrb r4, [r0]
  orr r3, r3, r5, put_byte_2
  ldrb r5, [r0]
  orr r3, r3, r6, put_byte_3
  ldrb r6, [r0]
  mov r4, r4,     put_byte_0
  ldrb ip, [r0]
  orr r4, r4, r5, put_byte_1
  orr r4, r4, r6, put_byte_2
  orr r4, r4, ip, put_byte_3
  stmia r1!, {r3, r4}

.Linsb_no_8: tst r2, #4
  beq .Linsb_no_4

  ldrb r3, [r0]
  ldrb r4, [r0]
  ldrb r5, [r0]
  ldrb r6, [r0]
  mov r3, r3,     put_byte_0
  orr r3, r3, r4, put_byte_1
  orr r3, r3, r5, put_byte_2
  orr r3, r3, r6, put_byte_3
  str r3, [r1], #4

.Linsb_no_4: ands r2, r2, #3
  ldmfdeq sp!, {r4 - r6, pc}

  cmp r2, #2
  ldrb r3, [r0]
  strb r3, [r1], #1
  ldrbge r3, [r0]
  strbge r3, [r1], #1
  ldrbgt r3, [r0]
  strbgt r3, [r1]

  ldmfd sp!, {r4 - r6, pc}
ENDPROC(__raw_readsb)

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.