2 * Copyright 2006, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
3 * All rights reserved. Distributed under the terms of the MIT License.
5 #ifndef _KERNEL_M68K_ARCH_PLATFORM_H
6 #define _KERNEL_M68K_ARCH_PLATFORM_H
9 #include <arch/platform.h>
11 struct real_time_data
;
13 typedef enum m68k_platform_types
{
14 M68K_PLATFORM_AMIGA
= 0,
15 M68K_PLATFORM_ATARI
, /* TT, Falcon, Hades, Milan... */
22 // implemented in src/system/kernel/arch/m68k/arch_platform.cpp
26 M68KPlatform(m68k_platform_type platformType
);
27 virtual ~M68KPlatform();
29 static M68KPlatform
*Default();
31 inline m68k_platform_type
PlatformType() const { return fPlatformType
; }
33 virtual status_t
Init(struct kernel_args
*kernelArgs
) = 0;
34 virtual status_t
InitSerialDebug(struct kernel_args
*kernelArgs
) = 0;
35 virtual status_t
InitPostVM(struct kernel_args
*kernelArgs
) = 0;
36 virtual status_t
InitPIC(struct kernel_args
*kernelArgs
) = 0;
37 virtual status_t
InitRTC(struct kernel_args
*kernelArgs
,
38 struct real_time_data
*data
) = 0;
39 virtual status_t
InitTimer(struct kernel_args
*kernelArgs
) = 0;
41 virtual char BlueScreenGetChar() = 0;
43 virtual char SerialDebugGetChar() = 0;
44 virtual void SerialDebugPutChar(char c
) = 0;
46 virtual void EnableIOInterrupt(int irq
) = 0;
47 virtual void DisableIOInterrupt(int irq
) = 0;
48 virtual bool AcknowledgeIOInterrupt(int irq
) = 0;
51 virtual uint8
ReadRTCReg(uint8 reg
) = 0;
52 virtual void WriteRTCReg(uint8 reg
, uint8 val
) = 0;
53 virtual void SetHardwareRTC(uint32 seconds
) = 0;
54 virtual uint32
GetHardwareRTC() = 0;
56 virtual void SetHardwareTimer(bigtime_t timeout
) = 0;
57 virtual void ClearHardwareTimer(void) = 0;
59 virtual void ShutDown(bool reboot
) = 0;
62 m68k_platform_type fPlatformType
;
66 } // namespace BPrivate
68 using BPrivate::M68KPlatform
;
70 //extern "C" M68KPlatform *instanciate_m68k_platform_amiga();
71 extern "C" M68KPlatform
*instanciate_m68k_platform_atari();
72 //extern "C" M68KPlatform *instanciate_m68k_platform_mac();
73 //extern "C" M68KPlatform *instanciate_m68k_platform_next();
76 #endif // _KERNEL_M68K_ARCH_PLATFORM_H