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

Quelle  iommu_64.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/* iommu.h: Definitions for the sun5 IOMMU.
 *
 * Copyright (C) 1996, 1999, 2007 David S. Miller (davem@davemloft.net)
 */

#ifndef _SPARC64_IOMMU_H
#define _SPARC64_IOMMU_H

/* The format of an iopte in the page tables. */
#define IOPTE_VALID   0x8000000000000000UL
#define IOPTE_64K     0x2000000000000000UL
#define IOPTE_STBUF   0x1000000000000000UL
#define IOPTE_INTRA   0x0800000000000000UL
#define IOPTE_CONTEXT 0x07ff800000000000UL
#define IOPTE_PAGE    0x00007fffffffe000UL
#define IOPTE_CACHE   0x0000000000000010UL
#define IOPTE_WRITE   0x0000000000000002UL

#define IOMMU_NUM_CTXS 4096
#include <asm/iommu-common.h>

struct iommu_arena {
 unsigned long *map;
 unsigned int hint;
 unsigned int limit;
};

#define ATU_64_SPACE_SIZE 0x800000000 /* 32G */

/* Data structures for SPARC ATU architecture */
struct atu_iotsb {
 void *table;  /* IOTSB table base virtual addr*/
 u64 ra;  /* IOTSB table real addr */
 u64 dvma_size; /* ranges[3].size or OS slected 32G size */
 u64 dvma_base; /* ranges[3].base */
 u64 table_size; /* IOTSB table size */
 u64 page_size; /* IO PAGE size for IOTSB */
 u32 iotsb_num; /* tsbnum is same as iotsb_handle */
};

struct atu_ranges {
 u64 base;
 u64 size;
};

struct atu {
 struct atu_ranges *ranges;
 struct atu_iotsb *iotsb;
 struct iommu_map_table tbl;
 u64   base;
 u64   size;
 u64   dma_addr_mask;
};

struct iommu {
 struct iommu_map_table tbl;
 struct atu  *atu;
 spinlock_t  lock;
 u32   dma_addr_mask;
 iopte_t   *page_table;
 unsigned long  iommu_control;
 unsigned long  iommu_tsbbase;
 unsigned long  iommu_flush;
 unsigned long  iommu_flushinv;
 unsigned long  iommu_tags;
 unsigned long  iommu_ctxflush;
 unsigned long  write_complete_reg;
 unsigned long  dummy_page;
 unsigned long  dummy_page_pa;
 unsigned long  ctx_lowest_free;
 DECLARE_BITMAP(ctx_bitmap, IOMMU_NUM_CTXS);
};

struct strbuf {
 int   strbuf_enabled;
 unsigned long  strbuf_control;
 unsigned long  strbuf_pflush;
 unsigned long  strbuf_fsync;
 unsigned long  strbuf_err_stat;
 unsigned long  strbuf_tag_diag;
 unsigned long  strbuf_line_diag;
 unsigned long  strbuf_ctxflush;
 unsigned long  strbuf_ctxmatch_base;
 unsigned long  strbuf_flushflag_pa;
 volatile unsigned long *strbuf_flushflag;
 volatile unsigned long __flushflag_buf[(64+(64-1)) / sizeof(long)];
};

int iommu_table_init(struct iommu *iommu, int tsbsize,
       u32 dma_offset, u32 dma_addr_mask,
       int numa_node);

#endif /* !(_SPARC64_IOMMU_H) */

Messung V0.5
C=93 H=99 G=95

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