cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sram.h (1279B)


      1/*
      2 * Handling of a sram zone for bestcomm
      3 *
      4 *
      5 * Copyright (C) 2007 Sylvain Munaut <tnt@246tNt.com>
      6 *
      7 * This file is licensed under the terms of the GNU General Public License
      8 * version 2. This program is licensed "as is" without any warranty of any
      9 * kind, whether express or implied.
     10 */
     11
     12#ifndef __BESTCOMM_SRAM_H__
     13#define __BESTCOMM_SRAM_H__
     14
     15#include <asm/rheap.h>
     16#include <asm/mmu.h>
     17#include <linux/spinlock.h>
     18
     19
     20/* Structure used internally */
     21	/* The internals are here for the inline functions
     22	 * sake, certainly not for the user to mess with !
     23	 */
     24struct bcom_sram {
     25	phys_addr_t		 base_phys;
     26	void 			*base_virt;
     27	unsigned int		 size;
     28	rh_info_t		*rh;
     29	spinlock_t		 lock;
     30};
     31
     32extern struct bcom_sram *bcom_sram;
     33
     34
     35/* Public API */
     36extern int  bcom_sram_init(struct device_node *sram_node, char *owner);
     37extern void bcom_sram_cleanup(void);
     38
     39extern void* bcom_sram_alloc(int size, int align, phys_addr_t *phys);
     40extern void  bcom_sram_free(void *ptr);
     41
     42static inline phys_addr_t bcom_sram_va2pa(void *va) {
     43	return bcom_sram->base_phys +
     44		(unsigned long)(va - bcom_sram->base_virt);
     45}
     46
     47static inline void *bcom_sram_pa2va(phys_addr_t pa) {
     48	return bcom_sram->base_virt +
     49		(unsigned long)(pa - bcom_sram->base_phys);
     50}
     51
     52
     53#endif  /* __BESTCOMM_SRAM_H__ */
     54