d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * CDDL HEADER START
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The contents of this file are subject to the terms of the
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Common Development and Distribution License (the "License").
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * You may not use this file except in compliance with the License.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * or http://www.opensolaris.org/os/licensing.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * See the License for the specific language governing permissions
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * and limitations under the License.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * When distributing Covered Code, include this CDDL HEADER in each
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * If applicable, add the following below this CDDL HEADER, with the
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * fields enclosed by brackets "[]" replaced with your own identifying
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * information: Portions Copyright [yyyy] [name of copyright owner]
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * CDDL HEADER END
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Use is subject to license terms.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#ifndef _SYS_PROM_PLAT_H
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define _SYS_PROM_PLAT_H
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#include <sys/feature_tests.h>
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#ifdef __cplusplus
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern "C" {
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#endif
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#if !defined(_LONGLONG_TYPE)
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#error "This header won't work without long long support"
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#endif
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * This file contains external platform-specific promif interface definitions.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * There may be none. This file is included by reference in <sys/promif.h>
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Common sun4 subset for the IEEE 1275-1994 compliant prom.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Memory allocation plus memory/mmu interfaces:
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Routines with fine-grained memory and MMU control are platform-dependent.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * MMU node virtualized "mode" arguments and results for Spitfire MMU:
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The default virtualized "mode" for client program mappings created
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * by the firmware is as follows:
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * G (global) Clear
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * L (locked) Clear
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * W (write) Set
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * R (read - soft) Set (Prom is not required to implement soft bits)
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * X (exec - soft) Set (Prom is not required to implement soft bits)
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * CV,CP (Cacheable) Set if memory page, Clear if IO page
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * E (side effects) Clear if memory page; Set if IO page
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * IE (Invert endian.) Clear
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The following fields are initialized as follows in the TTE-data for any
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * mappings created by the firmware on behalf of the client program:
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * P (Priviledged) Set
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * V (Valid) Set
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * NFO (No Fault Only) Clear
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Context 0
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Soft bits < private to the firmware implementation >
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Page size of Prom mappings are typically 8k, "modify" cannot change
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * page sizes. Mappings created by "map" are 8k pages.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * If the virtualized "mode" is -1, the defaults as shown above are used,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * otherwise the virtualized "mode" is set (and returned) based on the
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * following virtualized "mode" abstractions. The mmu node "translations"
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * property contains the actual tte-data, not the virtualized "mode".
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Note that client programs may not create locked mappings by setting
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * the LOCKED bit. There are Spitfire specific client interfaces to create
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * and remove locked mappings. (SUNW,{i,d}tlb-load).
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The LOCKED bit is defined here since it may be returned by the
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * "translate" method.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The PROM is not required to implement the Read and eXecute soft bits,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * and is not required to track them for the client program. They may be
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * set on calls to "map" and "modfify" and may be ignored by the firmware,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * and are not necessarily returned from "translate".
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The TTE soft bits are private to the firmware. No assumptions may
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * be made regarding the contents of the TTE soft bits.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Changing a mapping from cacheable to non-cacheable implies a flush
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * or invalidate operation, if necessary.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam *
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * NB: The "map" MMU node method should NOT be used to create IO device
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * mappings. The correct way to do this is to call the device's parent
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * "map-in" method using the CALL-METHOD client interface service.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_DEFAULT ((int)-1) /* Default "mode", see above */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * NB: These are not implemented in PROM version P1.0 ...
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_WRITE 0x0001 /* Translation is Writable */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_READ 0x0002 /* Soft: Readable, See above */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_EXEC 0x0004 /* Soft: eXecutable, See above */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_RWX_MASK 0x0007 /* Mask for R-W-X bits */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_LOCKED 0x0010 /* Read-only: Locked; see above */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_CACHED 0x0020 /* Set means both CV,CP bits */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_EFFECTS 0x0040 /* side Effects bit in MMU */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_GLOBAL 0x0080 /* Global bit */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#define PROM_MMU_MODE_INVERT 0x0100 /* Invert Endianness */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * resource allocation group: OBP only. (mapping functions are platform
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * dependent because they use physical address arguments.)
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern caddr_t prom_map(caddr_t virthint,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long physaddr, uint_t size);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * prom_alloc is platform dependent and has historical semantics
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * associated with the align argument and the return value.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * prom_malloc is the generic memory allocator.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern caddr_t prom_malloc(caddr_t virt, size_t size, uint_t align);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern caddr_t prom_allocate_virt(uint_t align, size_t size);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern caddr_t prom_claim_virt(size_t size, caddr_t virt);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern void prom_free_virt(size_t size, caddr_t virt);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_allocate_phys(size_t size, uint_t align,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long *physaddr);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_claim_phys(size_t size,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long physaddr);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern void prom_free_phys(size_t size,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long physaddr);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_map_phys(int mode, size_t size, caddr_t virt,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long physaddr);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern void prom_unmap_phys(size_t size, caddr_t virt);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern void prom_unmap_virt(size_t size, caddr_t virt);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_phys_installed_len(void);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_phys_avail_len(void);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_virt_avail_len(void);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_phys_installed(caddr_t);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_phys_avail(caddr_t);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_virt_avail(caddr_t);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * prom_retain allocates or returns retained physical memory
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * identified by the arguments of name string "id", "size" and "align".
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_retain(char *id, size_t size, uint_t align,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long *physaddr);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * prom_translate_virt returns the physical address and virtualized "mode"
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * for the given virtual address. After the call, if *valid is non-zero,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * a mapping to 'virt' exists and the physical address and virtualized
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * "mode" were returned to the caller.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_translate_virt(caddr_t virt, int *valid,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long *physaddr, int *mode);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * prom_modify_mapping changes the "mode" of an existing mapping or
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * repeated mappings. virt is the virtual address whose "mode" is to
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * be changed; size is some multiple of the fundamental pagesize.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * This method cannot be used to change the pagesize of an MMU mapping,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * nor can it be used to Lock a translation into the i or d tlb.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_modify_mapping(caddr_t virt, size_t size, int mode);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * Client interfaces for managing the {i,d}tlb handoff to client programs.
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_itlb_load(int index,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long tte_data, caddr_t virt);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int prom_dtlb_load(int index,
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam unsigned long long tte_data, caddr_t virt);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The client program implementation is required to provide a wrapper
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * to the client handler, for the 32 bit client program to 64 bit cell-sized
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * client interface handler (switch stack, etc.). This function is not
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * to be used externally!
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamextern int client_handler(void *cif_handler, void *arg_array);
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam/*
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam * The 'format' of the "translations" property in the 'mmu' node ...
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliamstruct translation {
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam uint32_t virt_hi; /* upper 32 bits of vaddr */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam uint32_t virt_lo; /* lower 32 bits of vaddr */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam uint32_t size_hi; /* upper 32 bits of size in bytes */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam uint32_t size_lo; /* lower 32 bits of size in bytes */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam uint32_t tte_hi; /* higher 32 bites of tte */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam uint32_t tte_lo; /* lower 32 bits of tte */
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam};
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#ifdef __cplusplus
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam}
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#endif
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam
d24234c24aeaca4ca56ee3ac2794507968f274c4Jerry Gilliam#endif /* _SYS_PROM_PLAT_H */