VSF Documented
arm9_generic.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __ARM9_GENERIC_H__
19#define __ARM9_GENERIC_H__
20
21/*============================ INCLUDES ======================================*/
22#include "hal/vsf_hal_cfg.h"
23
24#define __VSF_HEADER_ONLY_SHOW_ARCH_INFO__
25#include "hal/driver/driver.h"
26#undef __VSF_HEADER_ONLY_SHOW_ARCH_INFO__
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31/*============================ MACROS ========================================*/
32
33#ifndef __BYTE_ORDER
34# define __BYTE_ORDER __LITTLE_ENDIAN
35#endif
36
37// TODO:
38#if __ARM_ARCH != 5
39# error invalid __ARM_ARCH
40#endif
41
42#ifndef VSF_ARCH_PRI_NUM
43# define VSF_ARCH_PRI_NUM 4
44#endif
45#if VSF_ARCH_PRI_NUM > 4
46# error invalid VSF_ARCH_PRI_NUM
47#endif
48
49#ifndef VSF_ARCH_MMU
50# define VSF_ARCH_MMU ENABLED
51#endif
52
53// software interrupt provided by arch
54#define VSF_ARCH_SWI_NUM 0
55
56#if VSF_ARCH_PRI_NUM > 0
57# define __VSF_ARCH_PRI(__N, __BIT) \
58 VSF_ARCH_PRIO_##__N = (__N), \
59 vsf_arch_prio_##__N = (__N),
60#endif
61
62/*============================ MACROFIED FUNCTIONS ===========================*/
63
64#define isb() __asm__ __volatile__ ("" : : : "memory")
65#define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "memory")
66#define dmb() __asm__ __volatile__ ("" : : : "memory")
67
68#define vsf_arch_wakeup()
69
70/*============================ TYPES =========================================*/
71
72#if VSF_ARCH_PRI_NUM > 0
73// arm9 arch_priority is software emulated, simple start from 0 to VSF_ARCH_PRI_NUM - 1
74typedef enum vsf_arch_prio_t {
79
83#else
84typedef int vsf_arch_prio_t;
85#endif
86
87typedef unsigned long long virtual_addr_t;
88typedef unsigned long long virtual_size_t;
89typedef unsigned long long physical_addr_t;
90typedef unsigned long long physical_size_t;
91
92enum {
97};
98
99/*============================ GLOBAL VARIABLES ==============================*/
100/*============================ LOCAL VARIABLES ===============================*/
101/*============================ PROTOTYPES ====================================*/
102
103static VSF_CAL_ALWAYS_INLINE void vsf_arch_set_stack(uint32_t stack, uint32_t stack_size)
104{
105 __asm__ __volatile__ ("mov SP, %0" ::"r"(stack):);
106}
107
108#if VSF_ARCH_MMU == ENABLED
110extern void vsf_arch_mmu_enable(uint32_t *ttb);
111extern void vsf_arch_mmu_refresh(void);
112#endif
113
114extern void vsf_cache_sync(void * addr, uint_fast32_t size, bool is_from_device);
115
116#ifdef __cplusplus
117}
118#endif
119
120#endif
121/* EOF */
122
#define __volatile__
Definition __compiler.h:56
@ MMU_MAP_TYPE_CB
Definition arm9_generic.h:96
@ MMU_MAP_TYPE_CNB
Definition arm9_generic.h:95
@ MMU_MAP_TYPE_NCNB
Definition arm9_generic.h:93
@ MMU_MAP_TYPE_NCB
Definition arm9_generic.h:94
void vsf_arch_mmu_enable(uint32_t *ttb)
Definition arm9_generic.c:322
unsigned long long virtual_addr_t
Definition arm9_generic.h:87
unsigned long long physical_size_t
Definition arm9_generic.h:90
void vsf_cache_sync(void *addr, uint_fast32_t size, bool is_from_device)
Definition arm9_generic.c:384
unsigned long long virtual_size_t
Definition arm9_generic.h:88
unsigned long long physical_addr_t
Definition arm9_generic.h:89
int vsf_arch_prio_t
Definition arm9_generic.h:84
void vsf_arch_mmu_map(uint32_t *ttb, virtual_addr_t virt, physical_addr_t phys, physical_size_t size, int type)
Definition arm9_generic.c:303
#define VSF_ARCH_PRI_NUM
Definition arm9_generic.h:43
void vsf_arch_mmu_refresh(void)
Definition arm9_generic.c:317
vsf_arch_prio_t
Definition cortex_a_generic.h:85
@ __VSF_ARCH_PRIO_LEAST_MAX
Definition cortex_a_generic.h:87
@ __VSF_ARCH_PRIO_LEAST_MIN
Definition cortex_a_generic.h:88
@ VSF_ARCH_PRIO_INVALID
Definition cortex_a_generic.h:89
@ vsf_arch_prio_invalid
Definition cortex_a_generic.h:90
#define __VSF_ARCH_PRI(__N, __BIT)
Definition cortex_a_generic.h:79
@ vsf_arch_prio_highest
Definition cortex_m_generic.h:195
#define VSF_ARCH_PRI_BIT
Definition mcs51_generic.h:39
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
#define INT16_MAX
Definition stdint.h:50
#define INT16_MIN
Definition stdint.h:45
vk_av_control_type_t type
Definition vsf_audio.h:170
uint32_t size
Definition vsf_memfs.h:50
#define VSF_MREPEAT(__COUNT, __MACRO, __PARAM)
Definition vsf_repeat_macro.h:51
Generated from commit: vsfteam/vsf@66670f8