1/* 2 * Copyright 2006, Ingo Weinhold <bonefish@cs.tu-berlin.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5#ifndef _KERNEL_SPARC_ARCH_PLATFORM_H 6#define _KERNEL_SPARC_ARCH_PLATFORM_H 7 8#include <arch/platform.h> 9 10struct real_time_data; 11 12enum sparc_platform_type { 13 SPARC_PLATFORM_OPEN_FIRMWARE = 0, 14}; 15 16namespace BPrivate { 17 18class SparcPlatform { 19public: 20 SparcPlatform(sparc_platform_type platformType); 21 virtual ~SparcPlatform(); 22 23 static SparcPlatform *Default(); 24 25 inline sparc_platform_type PlatformType() const { return fPlatformType; } 26 27 virtual status_t Init(struct kernel_args *kernelArgs) = 0; 28 virtual status_t InitSerialDebug(struct kernel_args *kernelArgs) = 0; 29 virtual status_t InitPostVM(struct kernel_args *kernelArgs) = 0; 30 virtual status_t InitRTC(struct kernel_args *kernelArgs, 31 struct real_time_data *data) = 0; 32 33 virtual char SerialDebugGetChar() = 0; 34 virtual void SerialDebugPutChar(char c) = 0; 35 36 virtual void SetHardwareRTC(uint32 seconds) = 0; 37 virtual uint32 GetHardwareRTC() = 0; 38 39 virtual void ShutDown(bool reboot) = 0; 40 41private: 42 sparc_platform_type fPlatformType; 43}; 44 45} // namespace BPrivate 46 47using BPrivate::SparcPlatform; 48 49 50#endif // _KERNEL_SPARC_ARCH_PLATFORM_H 51