FreeNOS
SunxiCoreServer.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2020 Niek Linnenbank
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __SERVER_CORE_SUNXICORESERVER_H
19#define __SERVER_CORE_SUNXICORESERVER_H
20
22#include "CoreServer.h"
23
36{
37 public:
38
40 static const Address SecondaryCoreInfoOffset = (1024 * 1024 * 33);
41
44
45 private:
46
48 static const Size SoftwareInterruptNumber = 0x1;
49
50 public:
51
56
62 virtual Result initialize();
63
73
80
84 virtual void waitIPI() const;
85
94
95 private:
96
99};
100
106#endif /* __SERVER_CORE_SUNXICORESERVER_H */
u8 coreId
Definition IntelACPI.h:1
Represents a single Core in a Central Processing Unit (CPU).
Definition CoreServer.h:51
Implements a CoreServer for ARM/Allwinner (sunxi) based System-on-Chips.
virtual Core::Result sendIPI(uint coreId)
Send Inter-Processor-Interrupt.
virtual void waitIPI() const
Wait for Inter-Processor-Interrupt.
SunxiCoreServer()
Class constructor function.
virtual Core::Result discoverCores()
Discover processor cores.
virtual Core::Result bootCore(uint coreId, CoreInfo *info)
Boot a processor core.
virtual Result initialize()
Initialize the server.
static const Address SecondaryCoreInfoOffset
Offset of the CoreInfo struct relative to the kernel's physical base address.
static const Size SoftwareInterruptNumber
Software Generated Interrupt number for sending/receiving between cores.
SunxiCpuConfig m_cpuConfig
CPU Configuration Module instance.
static const Address SecondaryCoreInfoAddress
Physical memory address for CoreInfo passed to secondary cores during bootup.
Allwinner sunxi CPU configuration module support.
unsigned long Address
A memory address.
Definition Types.h:131
unsigned int uint
Unsigned integer number.
Definition Types.h:44
unsigned int Size
Any sane size indicator cannot go negative.
Definition Types.h:128
Result
Result code for Actions.
Definition Core.h:48
Per-Core information structure.
Definition CoreInfo.h:61