source: rtems/cpukit/score/cpu/sparc64/include/rtems/score/cpuimpl.h @ 03e4d1e9

Last change on this file since 03e4d1e9 was 03e4d1e9, checked in by Sebastian Huber <sebastian.huber@…>, on 06/29/22 at 12:37:47

score: Add _CPU_Use_thread_local_storage()

At some point during system initialization, the idle threads are created.
Afterwards, the boot processor basically executes within the context of an idle
thread with thread dispatching disabled. On some architectures, the
thread-local storage area of the associated thread must be set in dedicated
processor registers. Add the new CPU port function to do this:

void _CPU_Use_thread_local_storage( const Context_Control *context )

Close #4672.

  • Property mode set to 100644
File size: 2.4 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/**
4 * @file
5 *
6 * @brief CPU Port Implementation API
7 */
8
9/*
10 * Copyright (c) 2013 embedded brains GmbH
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 *    notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 *    notice, this list of conditions and the following disclaimer in the
19 *    documentation and/or other materials provided with the distribution.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef _RTEMS_SCORE_CPUIMPL_H
35#define _RTEMS_SCORE_CPUIMPL_H
36
37#include <rtems/score/cpu.h>
38
39/**
40 * @defgroup RTEMSScoreCPUSPARC64 SPARC64
41 *
42 * @ingroup RTEMSScoreCPU
43 *
44 * @brief SPARC64 Architecture Support
45 *
46 * @{
47 */
48
49#define CPU_PER_CPU_CONTROL_SIZE 0
50
51#ifndef ASM
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57RTEMS_NO_RETURN void _CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr error );
58
59RTEMS_INLINE_ROUTINE void _CPU_Context_volatile_clobber( uintptr_t pattern )
60{
61  /* TODO */
62}
63
64RTEMS_INLINE_ROUTINE void _CPU_Context_validate( uintptr_t pattern )
65{
66  while (1) {
67    /* TODO */
68  }
69}
70
71RTEMS_INLINE_ROUTINE void _CPU_Instruction_illegal( void )
72{
73  __asm__ volatile ( "unimp" );
74}
75
76RTEMS_INLINE_ROUTINE void _CPU_Instruction_no_operation( void )
77{
78  __asm__ volatile ( "nop" );
79}
80
81RTEMS_INLINE_ROUTINE void _CPU_Use_thread_local_storage(
82  const Context_Control *context
83)
84{
85  (void) context;
86}
87
88#ifdef __cplusplus
89}
90#endif
91
92#endif /* ASM */
93
94#endif /* _RTEMS_SCORE_CPUIMPL_H */
Note: See TracBrowser for help on using the repository browser.