RTEMS 6.1-rc7
Loading...
Searching...
No Matches
cpuimpl.h
Go to the documentation of this file.
1
7/*
8 * Copyright (c) 2018 Amaan Cheval <amaan.cheval@gmail.com>
9 *
10 * Copyright (C) 2013, 2016 embedded brains GmbH & Co. KG
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 AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22 * 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 AUTHOR OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#ifndef _RTEMS_SCORE_CPUIMPL_H
35#define _RTEMS_SCORE_CPUIMPL_H
36
37#include <rtems/score/cpu.h>
38
49#define CPU_PER_CPU_CONTROL_SIZE 0
50
51#define CPU_THREAD_LOCAL_STORAGE_VARIANT 20
52
53#ifndef ASM
54
55#ifdef __cplusplus
56extern "C" {
57#endif
58
59static inline void _CPU_Context_volatile_clobber( uintptr_t pattern )
60{
61 (void) pattern;
62
63 /* TODO */
64}
65
66static inline void _CPU_Context_validate( uintptr_t pattern )
67{
68 (void) pattern;
69
70 while (1) {
71 /* TODO */
72 }
73}
74
75static inline void _CPU_Instruction_illegal( void )
76{
77 __asm__ volatile ( ".word 0" );
78}
79
80static inline void _CPU_Instruction_no_operation( void )
81{
82 __asm__ volatile ( "nop" );
83}
84
85static inline void _CPU_Use_thread_local_storage(
87)
88{
89 uint32_t high = (uint32_t) (context->fs >> 32);
90 uint32_t low = (uint32_t) context->fs;
91 wrmsr(FSBASE_MSR, low, high);
92}
93
94static inline void *_CPU_Get_TLS_thread_pointer(
96)
97{
98 return (void*) context->fs;
99}
100
101#ifdef __cplusplus
102}
103#endif
104
105#endif /* !ASM */
106
109#endif /* _RTEMS_SCORE_CPUIMPL_H */
rtems_termios_device_context * context
Definition: console-config.c:62
Thread register context.
Definition: cpu.h:173