Zephyr API Documentation
4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
cpu.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015, Wind River Systems, Inc.
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef _CORTEX_M_CPU_H
8
#define _CORTEX_M_CPU_H
9
10
#ifdef _ASMLANGUAGE
11
12
#define _SCS_BASE_ADDR _PPB_INT_SCS
13
14
/* ICSR defines */
15
#define _SCS_ICSR (_SCS_BASE_ADDR + 0xd04)
16
#define _SCS_ICSR_PENDSV (1 << 28)
17
#define _SCS_ICSR_UNPENDSV (1 << 27)
18
#define _SCS_ICSR_RETTOBASE (1 << 11)
19
20
#define _SCS_MPU_CTRL (_SCS_BASE_ADDR + 0xd94)
21
22
/* CONTROL defines */
23
#define _CONTROL_FPCA_Msk (1 << 2)
24
25
/* EXC_RETURN defines */
26
#define _EXC_RETURN_SPSEL_Msk (1 << 2)
27
#define _EXC_RETURN_FTYPE_Msk (1 << 4)
28
29
#else
30
#include <
stdint.h
>
31
32
#ifdef __cplusplus
33
extern
"C"
{
34
#endif
35
36
/* CP10 Access Bits */
37
#define CPACR_CP10_Pos 20U
38
#define CPACR_CP10_Msk (3UL << CPACR_CP10_Pos)
39
#define CPACR_CP10_NO_ACCESS (0UL << CPACR_CP10_Pos)
40
#define CPACR_CP10_PRIV_ACCESS (1UL << CPACR_CP10_Pos)
41
#define CPACR_CP10_RESERVED (2UL << CPACR_CP10_Pos)
42
#define CPACR_CP10_FULL_ACCESS (3UL << CPACR_CP10_Pos)
43
44
/* CP11 Access Bits */
45
#define CPACR_CP11_Pos 22U
46
#define CPACR_CP11_Msk (3UL << CPACR_CP11_Pos)
47
#define CPACR_CP11_NO_ACCESS (0UL << CPACR_CP11_Pos)
48
#define CPACR_CP11_PRIV_ACCESS (1UL << CPACR_CP11_Pos)
49
#define CPACR_CP11_RESERVED (2UL << CPACR_CP11_Pos)
50
#define CPACR_CP11_FULL_ACCESS (3UL << CPACR_CP11_Pos)
51
52
#ifdef CONFIG_PM_S2RAM
53
54
struct
__cpu_context {
55
/* GPRs are saved onto the stack */
56
uint32_t
msp;
57
uint32_t
psp;
58
uint32_t
primask;
59
uint32_t
control;
60
61
#if defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
62
/* Registers present only on ARMv7-M and ARMv8-M Mainline */
63
uint32_t
faultmask;
64
uint32_t
basepri;
65
#endif
/* CONFIG_ARMV7_M_ARMV8_M_MAINLINE */
66
67
#if defined(CONFIG_CPU_CORTEX_M_HAS_SPLIM)
68
/* Registers present only on certain ARMv8-M implementations */
69
uint32_t
msplim;
70
uint32_t
psplim;
71
#endif
/* CONFIG_CPU_CORTEX_M_HAS_SPLIM */
72
};
73
74
typedef
struct
__cpu_context _cpu_context_t;
75
76
#endif
/* CONFIG_PM_S2RAM */
77
78
#ifdef __cplusplus
79
}
80
#endif
81
82
#endif
/* _ASMLANGUAGE */
83
84
#endif
/* _CORTEX_M_CPU_H */
stdint.h
uint32_t
__UINT32_TYPE__ uint32_t
Definition
stdint.h:90
zephyr
arch
arm
cortex_m
cpu.h
Generated on Mon Dec 23 2024 12:02:33 for Zephyr API Documentation by
1.12.0