rockbox/firmware/export/cpu.h
Aidan MacDonald 99dd797169 firmware: cleanup PortalPlayer NOCACHE_BASE defines
Move the definition of NOCACHE_BASE to the CPU headers
instead of having them copy-and-pasted in a few places.

Change-Id: Ibbab27a5a07906d46dbd4dd9065f2238bc885d6b
2026-03-06 14:15:29 -05:00

105 lines
3.4 KiB
C

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2004 by Linus Nielsen Feltzing
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __CPU_H
#define __CPU_H
#include "config.h"
#if CONFIG_CPU == MCF5249
#include "mcf5249.h"
#elif CONFIG_CPU == MCF5250
#include "mcf5250.h"
#elif (CONFIG_CPU == PP5020) || (CONFIG_CPU == PP5022)
#include "pp5020.h"
#elif CONFIG_CPU == PP5002
#include "pp5002.h"
#elif CONFIG_CPU == PP5024
#include "pp5024.h"
#elif CONFIG_CPU == PP6100
#include "pp6100.h"
#elif CONFIG_CPU == S3C2440
#include "s3c2440.h"
#elif CONFIG_CPU == DM320
#include "dm320.h"
#elif CONFIG_CPU == IMX31L
#include "imx31l.h"
#elif defined(CPU_TCC780X)
#include "tcc780x.h"
#elif defined(CPU_S5L87XX)
#include "s5l87xx.h"
#elif CONFIG_CPU == JZ4732
#include "jz4740.h"
#elif CONFIG_CPU == JZ4760B
#include "jz4760b.h"
#elif CONFIG_CPU == AS3525
#include "as3525.h"
#elif CONFIG_CPU == AS3525v2
#include "as3525v2.h"
#elif CONFIG_CPU == IMX233
#include "imx233.h"
#elif CONFIG_CPU == RK27XX
#include "rk27xx.h"
#elif CONFIG_CPU == X1000
#include "x1000.h"
#elif CONFIG_CPU == STM32H743
#include "stm32h743.h"
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && (defined(CPU_ARM) || defined(CPU_MIPS))
# define HAVE_CPU_CACHE_ALIGN
#endif
#if defined(HAVE_CPU_CACHE_ALIGN)
# if !defined(CACHEALIGN_BITS)
# error "CPU header must define CACHEALIGN_BITS"
# elif !defined(CACHEALIGN_SIZE)
# error "CPU header must define CACHEALIGN_SIZE"
# elif CACHEALIGN_SIZE != (1u << CACHEALIGN_BITS)
# error "CACHEALIGN_SIZE and CACHEALIGN_BITS are inconsistent"
# endif
#else
# if defined(CACHEALIGN_BITS) && defined(CACHEALIGN_SIZE)
# error "CACHEALIGN_BITS and CACHEALIGN_SIZE must not be defined for targets with no CPU cache"
# endif
#endif
/*
* Note: NOCACHE_BASE assumes that DRAM is linearly mapped both
* at a lower cached address and an upper uncached address, so
* that you can add NOCACHE_BASE to the cached DRAM address to
* get the corresponding uncached address.
*
* Defining NOCACHE_BASE is only required if you need plugins to
* be able to link data at uncached addresses. If in doubt, you
* don't need this. It's mainly of use for dual-core PortalPlayer
* targets which need to do this for things like mutexes/queues;
* since PP lacks hardware cache coherency, data which is writable
* by more than one core often needs to accessed uncached.
*/
#if defined(NOCACHE_BASE)
# if !defined(HAVE_CPU_CACHE_ALIGN)
# error "NOCACHE_BASE cannot be defined on targets with no CPU cache!"
# elif NOCACHE_BASE == 0
# error "NOCACHE_BASE cannot be 0!"
# endif
#endif
#endif /* __CPU_H */