Files
2025-12-03 11:12:34 +08:00

56 lines
1.9 KiB
C

/* Copyright(C) 2010- , JIELI TECHNOLOGY, Inc.
* All right reserved.
*/
#ifndef __UI_ADDR_H__
#define __UI_ADDR_H__
#include "system/malloc.h"
#include "asm/psram_api.h"
/* ================================= FLASH 地址处理 ================================= */
/* 判断地址是否在 flash 范围内 */
#define UI_ADDR_IN_FLASH(addr) (memory_in_flash((const void *)(addr)))
/* 判断地址是否在 flash cache 范围内 */
#define UI_ADDR_IN_FLASH_CACHE(addr) (memory_in_flash_cache((const void *)(addr)))
/* 判断地址是否在 flash nocache 范围内 */
#define UI_ADDR_IN_FLASH_NOCACHE(addr) (memory_in_flash_nocache((const void *)(addr)))
/* ================================= SRAM 地址处理 ================================= */
/* 判断地址是否在物理 RAM 范围内 */
#define UI_ADDR_IN_PHY_RAM(addr) (memory_in_phy((const void *)(addr)))
/* 判断地址是否在虚拟 RAM 范围内 */
#define UI_ADDR_IN_VLT_RAM(addr) (memory_in_vtl((const void *)(addr)))
/* 判断地址是否为 RAM 地址 */
#define UI_ADDR_IN_RAM(addr) (UI_ADDR_IN_PHY_RAM(addr) || UI_ADDR_IN_VLT_RAM(addr))
/* ================================= PSRAM 地址处理 ================================= */
/* 判断地址是否在 PSRAM 范围 */
#define UI_ADDR_IN_PSRAM(addr) (UI_ADDR_IN_PSRAM_NOCACHE(addr) || UI_ADDR_IN_PSRAM_CACHE(addr))
/* 判断地址是否在 PSRAM nocache 范围*/
#define UI_ADDR_IN_PSRAM_NOCACHE(addr) (psram_no_cache_check((void *)(addr)))
/* 判断地址是否在 PSRAM cache 范围 */
#define UI_ADDR_IN_PSRAM_CACHE(addr) (psram_cache_check((void *)(addr)))
/* PSRAM cache 地址转 nocache*/
#define UI_PSRAM_CACHE_TO_NOCACHE(addr) (UI_ADDR_IN_PSRAM_CACHE(addr) ? ((void *)psram_cache_2_no_cache((void *)(addr))) : (void *)(addr))
/* PSRAM nocache 地址转 cache */
#define UI_PSRAM_NOCACHE_TO_CACHE(addr) (UI_ADDR_IN_PSRAM_NOCACHE(addr) ? ((void *)psram_no_cache_2_cache((void *)(addr))) : (void *)(addr))
#endif