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

Quelle  io.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * IO definitions for the Hexagon architecture
 *
 * Copyright (c) 2010-2013, The Linux Foundation. All rights reserved.
 */


#ifndef _ASM_IO_H
#define _ASM_IO_H

#include <linux/types.h>
#include <asm/page.h>
#include <asm/cacheflush.h>

extern int remap_area_pages(unsigned long start, unsigned long phys_addr,
    unsigned long end, unsigned long flags);

/*
 * virt_to_phys - map virtual address to physical
 * @address:  address to map
 */

static inline unsigned long virt_to_phys(volatile void *address)
{
 return __pa(address);
}

/*
 * phys_to_virt - map physical address to virtual
 * @address: address to map
 */

static inline void *phys_to_virt(unsigned long address)
{
 return __va(address);
}

/*
 * readb - read byte from memory mapped device
 * @addr:  pointer to memory
 *
 */

static inline u8 __raw_readb(const volatile void __iomem *addr)
{
 u8 val;
 asm volatile(
  "%0 = memb(%1);"
  : "=&r" (val)
  : "r" (addr)
 );
 return val;
}
#define __raw_readb __raw_readb

static inline u16 __raw_readw(const volatile void __iomem *addr)
{
 u16 val;
 asm volatile(
  "%0 = memh(%1);"
  : "=&r" (val)
  : "r" (addr)
 );
 return val;
}
#define __raw_readw __raw_readw

static inline u32 __raw_readl(const volatile void __iomem *addr)
{
 u32 val;
 asm volatile(
  "%0 = memw(%1);"
  : "=&r" (val)
  : "r" (addr)
 );
 return val;
}
#define __raw_readl __raw_readl

/*
 * writeb - write a byte to a memory location
 * @data: data to write to
 * @addr:  pointer to memory
 *
 */

static inline void __raw_writeb(u8 data, volatile void __iomem *addr)
{
 asm volatile(
  "memb(%0) = %1;"
  :
  : "r" (addr), "r" (data)
  : "memory"
 );
}
#define __raw_writeb __raw_writeb

static inline void __raw_writew(u16 data, volatile void __iomem *addr)
{
 asm volatile(
  "memh(%0) = %1;"
  :
  : "r" (addr), "r" (data)
  : "memory"
 );

}
#define __raw_writew __raw_writew

static inline void __raw_writel(u32 data, volatile void __iomem *addr)
{
 asm volatile(
  "memw(%0) = %1;"
  :
  : "r" (addr), "r" (data)
  : "memory"
 );
}
#define __raw_writel __raw_writel

/*
 * I/O memory mapping functions.
 */

#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \
         (__HEXAGON_C_DEV << 6))

/*
 * These defines are necessary to use the generic io.h for filling in
 * the missing parts of the API contract. This is because the platform
 * uses (inline) functions rather than defines and the generic helper
 * fills in the undefined.
 */

#define virt_to_phys virt_to_phys
#define phys_to_virt phys_to_virt
#include <asm-generic/io.h>

#endif

Messung V0.5
C=95 H=78 G=86

¤ Dauer der Verarbeitung: 0.1 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.