Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6d8bd73

Browse files
libraries/openamp_arduino: Update Open-AMP to version v2023.10.0 - 1.5.0.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
1 parent fcc63d9 commit 6d8bd73

27 files changed

+7911
-3710
lines changed

‎libraries/openamp_arduino/src/elf_loader.c‎

Lines changed: 707 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 124 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,124 @@
1-
/*
2-
* Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3-
*
4-
* SPDX-License-Identifier: BSD-3-Clause
5-
*/
6-
7-
/*
8-
* @file gcc/atomic.h
9-
* @brief GCC specific atomic primitives for libmetal.
10-
*/
11-
12-
#ifndef __METAL_GCC_ATOMIC__H__
13-
#define __METAL_GCC_ATOMIC__H__
14-
15-
#ifdef __cplusplus
16-
extern "C" {
17-
#endif
18-
19-
typedef int atomic_flag;
20-
typedef char atomic_char;
21-
typedef unsigned char atomic_uchar;
22-
typedef short atomic_short;
23-
typedef unsigned short atomic_ushort;
24-
typedef int atomic_int;
25-
typedef unsigned int atomic_uint;
26-
typedef long atomic_long;
27-
typedef unsigned long atomic_ulong;
28-
typedef long long atomic_llong;
29-
typedef unsigned long long atomic_ullong;
30-
31-
#define ATOMIC_FLAG_INIT 0
32-
#define ATOMIC_VAR_INIT(VAL) (VAL)
33-
34-
typedef enum {
35-
memory_order_relaxed,
36-
memory_order_consume,
37-
memory_order_acquire,
38-
memory_order_release,
39-
memory_order_acq_rel,
40-
memory_order_seq_cst,
41-
} memory_order;
42-
43-
#define atomic_flag_test_and_set(FLAG) \
44-
__sync_lock_test_and_set((FLAG), 1)
45-
#define atomic_flag_test_and_set_explicit(FLAG, MO) \
46-
atomic_flag_test_and_set(FLAG)
47-
#define atomic_flag_clear(FLAG) \
48-
__sync_lock_release((FLAG))
49-
#define atomic_flag_clear_explicit(FLAG, MO) \
50-
atomic_flag_clear(FLAG)
51-
#define atomic_init(OBJ, VAL) \
52-
do { *(OBJ) = (VAL); } while (0)
53-
#define atomic_is_lock_free(OBJ) \
54-
(sizeof(*(OBJ)) <= sizeof(long))
55-
#define atomic_store(OBJ, VAL) \
56-
do { *(OBJ) = (VAL); __sync_synchronize(); } while (0)
57-
#define atomic_store_explicit(OBJ, VAL, MO) \
58-
atomic_store((OBJ), (VAL))
59-
#define atomic_load(OBJ) \
60-
({ __sync_synchronize(); *(OBJ); })
61-
#define atomic_load_explicit(OBJ, MO) \
62-
atomic_load(OBJ)
63-
#define atomic_exchange(OBJ, DES) \
64-
({ \
65-
typeof(OBJ) obj = (OBJ); \
66-
typeof(*obj) des = (DES); \
67-
typeof(*obj) expval; \
68-
typeof(*obj) oldval = atomic_load(obj); \
69-
do { \
70-
expval = oldval; \
71-
oldval = __sync_val_compare_and_swap( \
72-
obj, expval, des); \
73-
} while (oldval != expval); \
74-
oldval; \
75-
})
76-
#define atomic_exchange_explicit(OBJ, DES, MO) \
77-
atomic_exchange((OBJ), (DES))
78-
#define atomic_compare_exchange_strong(OBJ, EXP, DES) \
79-
({ \
80-
typeof(OBJ) obj = (OBJ); \
81-
typeof(EXP) exp = (EXP); \
82-
typeof(*obj) expval = *exp; \
83-
typeof(*obj) oldval = __sync_val_compare_and_swap( \
84-
obj, expval, (DES)); \
85-
*exp = oldval; \
86-
oldval == expval; \
87-
})
88-
#define atomic_compare_exchange_strong_explicit(OBJ, EXP, DES, MO) \
89-
atomic_compare_exchange_strong((OBJ), (EXP), (DES))
90-
#define atomic_compare_exchange_weak(OBJ, EXP, DES) \
91-
atomic_compare_exchange_strong((OBJ), (EXP), (DES))
92-
#define atomic_compare_exchange_weak_explicit(OBJ, EXP, DES, MO) \
93-
atomic_compare_exchange_weak((OBJ), (EXP), (DES))
94-
#define atomic_fetch_add(OBJ, VAL) \
95-
__sync_fetch_and_add((OBJ), (VAL))
96-
#define atomic_fetch_add_explicit(OBJ, VAL, MO) \
97-
atomic_fetch_add((OBJ), (VAL))
98-
#define atomic_fetch_sub(OBJ, VAL) \
99-
__sync_fetch_and_sub((OBJ), (VAL))
100-
#define atomic_fetch_sub_explicit(OBJ, VAL, MO) \
101-
atomic_fetch_sub((OBJ), (VAL))
102-
#define atomic_fetch_or(OBJ, VAL) \
103-
__sync_fetch_and_or((OBJ), (VAL))
104-
#define atomic_fetch_or_explicit(OBJ, VAL, MO) \
105-
atomic_fetch_or((OBJ), (VAL))
106-
#define atomic_fetch_xor(OBJ, VAL) \
107-
__sync_fetch_and_xor((OBJ), (VAL))
108-
#define atomic_fetch_xor_explicit(OBJ, VAL, MO) \
109-
atomic_fetch_xor((OBJ), (VAL))
110-
#define atomic_fetch_and(OBJ, VAL) \
111-
__sync_fetch_and_and((OBJ), (VAL))
112-
#define atomic_fetch_and_explicit(OBJ, VAL, MO) \
113-
atomic_fetch_and((OBJ), (VAL))
114-
#define atomic_thread_fence(MO) \
115-
__sync_synchronize()
116-
#define atomic_signal_fence(MO) \
117-
__sync_synchronize()
118-
119-
#ifdef __cplusplus
120-
}
121-
#endif
122-
123-
#endif /* __METAL_GCC_ATOMIC__H__ */
1+
/*
2+
* Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
/*
8+
* @file gcc/atomic.h
9+
* @brief GCC specific atomic primitives for libmetal.
10+
*/
11+
12+
#ifndef __METAL_GCC_ATOMIC__H__
13+
#define __METAL_GCC_ATOMIC__H__
14+
15+
#ifdef __cplusplus
16+
extern "C" {
17+
#endif
18+
19+
typedef int atomic_flag;
20+
typedef char atomic_char;
21+
typedef unsigned char atomic_uchar;
22+
typedef short atomic_short;
23+
typedef unsigned short atomic_ushort;
24+
typedef int atomic_int;
25+
typedef unsigned int atomic_uint;
26+
typedef atomic_uint atomic_uintptr_t;
27+
typedef long atomic_long;
28+
typedef unsigned long atomic_ulong;
29+
typedef long long atomic_llong;
30+
typedef unsigned long long atomic_ullong;
31+
32+
#define ATOMIC_FLAG_INIT 0
33+
#define ATOMIC_VAR_INIT(VAL) (VAL)
34+
35+
typedef enum {
36+
memory_order_relaxed,
37+
memory_order_consume,
38+
memory_order_acquire,
39+
memory_order_release,
40+
memory_order_acq_rel,
41+
memory_order_seq_cst,
42+
} memory_order;
43+
44+
#define atomic_flag_test_and_set(FLAG) \
45+
__sync_lock_test_and_set((FLAG), 1)
46+
#define atomic_flag_test_and_set_explicit(FLAG, MO) \
47+
atomic_flag_test_and_set(FLAG)
48+
#define atomic_flag_clear(FLAG) \
49+
__sync_lock_release((FLAG))
50+
#define atomic_flag_clear_explicit(FLAG, MO) \
51+
atomic_flag_clear(FLAG)
52+
#define atomic_init(OBJ, VAL) \
53+
do { *(OBJ) = (VAL); } while (0)
54+
#define atomic_is_lock_free(OBJ) \
55+
(sizeof(*(OBJ)) <= sizeof(long))
56+
#define atomic_store(OBJ, VAL) \
57+
do { *(OBJ) = (VAL); __sync_synchronize(); } while (0)
58+
#define atomic_store_explicit(OBJ, VAL, MO) \
59+
atomic_store((OBJ), (VAL))
60+
#define atomic_load(OBJ) \
61+
({ __sync_synchronize(); *(OBJ); })
62+
#define atomic_load_explicit(OBJ, MO) \
63+
atomic_load(OBJ)
64+
#define atomic_exchange(OBJ, DES) \
65+
({ \
66+
__typeof__(OBJ) obj = (OBJ); \
67+
__typeof__(*obj) des = (DES); \
68+
__typeof__(*obj) expval; \
69+
__typeof__(*obj) oldval = atomic_load(obj); \
70+
do { \
71+
expval = oldval; \
72+
oldval = __sync_val_compare_and_swap( \
73+
obj, expval, des); \
74+
} while (oldval != expval); \
75+
oldval; \
76+
})
77+
#define atomic_exchange_explicit(OBJ, DES, MO) \
78+
atomic_exchange((OBJ), (DES))
79+
#define atomic_compare_exchange_strong(OBJ, EXP, DES) \
80+
({ \
81+
__typeof__(OBJ) obj = (OBJ); \
82+
__typeof__(EXP) exp = (EXP); \
83+
__typeof__(*obj) expval = *exp; \
84+
__typeof__(*obj) oldval = __sync_val_compare_and_swap( \
85+
obj, expval, (DES)); \
86+
*exp = oldval; \
87+
oldval == expval; \
88+
})
89+
#define atomic_compare_exchange_strong_explicit(OBJ, EXP, DES, MO) \
90+
atomic_compare_exchange_strong((OBJ), (EXP), (DES))
91+
#define atomic_compare_exchange_weak(OBJ, EXP, DES) \
92+
atomic_compare_exchange_strong((OBJ), (EXP), (DES))
93+
#define atomic_compare_exchange_weak_explicit(OBJ, EXP, DES, MO) \
94+
atomic_compare_exchange_weak((OBJ), (EXP), (DES))
95+
#define atomic_fetch_add(OBJ, VAL) \
96+
__sync_fetch_and_add((OBJ), (VAL))
97+
#define atomic_fetch_add_explicit(OBJ, VAL, MO) \
98+
atomic_fetch_add((OBJ), (VAL))
99+
#define atomic_fetch_sub(OBJ, VAL) \
100+
__sync_fetch_and_sub((OBJ), (VAL))
101+
#define atomic_fetch_sub_explicit(OBJ, VAL, MO) \
102+
atomic_fetch_sub((OBJ), (VAL))
103+
#define atomic_fetch_or(OBJ, VAL) \
104+
__sync_fetch_and_or((OBJ), (VAL))
105+
#define atomic_fetch_or_explicit(OBJ, VAL, MO) \
106+
atomic_fetch_or((OBJ), (VAL))
107+
#define atomic_fetch_xor(OBJ, VAL) \
108+
__sync_fetch_and_xor((OBJ), (VAL))
109+
#define atomic_fetch_xor_explicit(OBJ, VAL, MO) \
110+
atomic_fetch_xor((OBJ), (VAL))
111+
#define atomic_fetch_and(OBJ, VAL) \
112+
__sync_fetch_and_and((OBJ), (VAL))
113+
#define atomic_fetch_and_explicit(OBJ, VAL, MO) \
114+
atomic_fetch_and((OBJ), (VAL))
115+
#define atomic_thread_fence(MO) \
116+
__sync_synchronize()
117+
#define atomic_signal_fence(MO) \
118+
__sync_synchronize()
119+
120+
#ifdef __cplusplus
121+
}
122+
#endif
123+
124+
#endif /* __METAL_GCC_ATOMIC__H__ */
Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,45 @@
1-
/*
2-
* Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3-
*
4-
* SPDX-License-Identifier: BSD-3-Clause
5-
*/
6-
7-
/*
8-
* @file gcc/compiler.h
9-
* @brief GCC specific primitives for libmetal.
10-
*/
11-
12-
#ifndef __METAL_GCC_COMPILER__H__
13-
#define __METAL_GCC_COMPILER__H__
14-
15-
#ifdef __cplusplus
16-
extern "C" {
17-
#endif
18-
19-
#define restrict __restrict__
20-
#define metal_align(n) __attribute__((aligned(n)))
21-
#define metal_weak __attribute__((weak))
22-
23-
#ifdef __cplusplus
24-
}
25-
#endif
26-
27-
#endif /* __METAL_GCC_COMPILER__H__ */
1+
/*
2+
* Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
/*
8+
* @file gcc/compiler.h
9+
* @brief GCC specific primitives for libmetal.
10+
*/
11+
12+
#ifndef __METAL_GCC_COMPILER__H__
13+
#define __METAL_GCC_COMPILER__H__
14+
15+
#ifdef __cplusplus
16+
extern "C" {
17+
#endif
18+
19+
#define restrict __restrict__
20+
#define metal_align(n) __attribute__((aligned(n)))
21+
#define metal_weak __attribute__((weak))
22+
23+
#if defined(__STRICT_ANSI__)
24+
#define metal_asm __asm__
25+
#else
26+
/*
27+
* Even though __asm__ is always available in mainline GCC, we use asm in
28+
* the non-strict modes for compatibility with other compilers that define
29+
* __GNUC__
30+
*/
31+
#define metal_asm asm
32+
#endif
33+
34+
#define METAL_PACKED_BEGIN
35+
#define METAL_PACKED_END __attribute__((__packed__))
36+
37+
#ifndef __deprecated
38+
#define __deprecated __attribute__((deprecated))
39+
#endif
40+
41+
#ifdef __cplusplus
42+
}
43+
#endif
44+
45+
#endif /* __METAL_GCC_COMPILER__H__ */

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /