- Move Atari platform class out to a platform file.
- Use the platform object to determine the platform type in system_info. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26166 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
d9a109d8dc
commit
f41c3a5bcd
|
@ -9,12 +9,12 @@
|
||||||
|
|
||||||
struct real_time_data;
|
struct real_time_data;
|
||||||
|
|
||||||
enum m68k_platform_type {
|
typedef enum m68k_platform_types {
|
||||||
M68K_PLATFORM_AMIGA = 0,
|
M68K_PLATFORM_AMIGA = 0,
|
||||||
M68K_PLATFORM_ATARI, /* TT, Falcon, Hades, Milan... */
|
M68K_PLATFORM_ATARI, /* TT, Falcon, Hades, Milan... */
|
||||||
M68K_PLATFORM_MAC,
|
M68K_PLATFORM_MAC,
|
||||||
M68K_PLATFORM_NEXT
|
M68K_PLATFORM_NEXT
|
||||||
};
|
} m68k_platform_type;
|
||||||
|
|
||||||
namespace BPrivate {
|
namespace BPrivate {
|
||||||
|
|
||||||
|
@ -22,12 +22,13 @@ namespace BPrivate {
|
||||||
|
|
||||||
class M68KPlatform {
|
class M68KPlatform {
|
||||||
public:
|
public:
|
||||||
M68KPlatform(m68k_platform_type platformType);
|
M68KPlatform(platform_type platformType, m68k_platform_type m68kPlatformType);
|
||||||
virtual ~M68KPlatform();
|
virtual ~M68KPlatform();
|
||||||
|
|
||||||
static M68KPlatform *Default();
|
static M68KPlatform *Default();
|
||||||
|
|
||||||
inline m68k_platform_type PlatformType() const { return fPlatformType; }
|
inline platform_type PlatformType() const { return fPlatformType; }
|
||||||
|
inline m68k_platform_type M68KPlatformType() const { return fM68KPlatformType; }
|
||||||
|
|
||||||
virtual status_t Init(struct kernel_args *kernelArgs) = 0;
|
virtual status_t Init(struct kernel_args *kernelArgs) = 0;
|
||||||
virtual status_t InitSerialDebug(struct kernel_args *kernelArgs) = 0;
|
virtual status_t InitSerialDebug(struct kernel_args *kernelArgs) = 0;
|
||||||
|
@ -49,50 +50,19 @@ public:
|
||||||
virtual void ShutDown(bool reboot) = 0;
|
virtual void ShutDown(bool reboot) = 0;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
m68k_platform_type fPlatformType;
|
m68k_platform_type fM68KPlatformType;
|
||||||
|
platform_type fPlatformType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - Amiga
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - Atari (Falcon)
|
|
||||||
// implemented in src/system/kernel/platform/atari_m68k/platform.cpp
|
|
||||||
|
|
||||||
class M68KAtari : public M68KPlatform {
|
|
||||||
public:
|
|
||||||
M68KAtari();
|
|
||||||
virtual ~M68KAtari();
|
|
||||||
|
|
||||||
virtual status_t Init(struct kernel_args *kernelArgs);
|
|
||||||
virtual status_t InitSerialDebug(struct kernel_args *kernelArgs);
|
|
||||||
virtual status_t InitPostVM(struct kernel_args *kernelArgs);
|
|
||||||
virtual status_t InitPIC(struct kernel_args *kernelArgs);
|
|
||||||
virtual status_t InitRTC(struct kernel_args *kernelArgs,
|
|
||||||
struct real_time_data *data);
|
|
||||||
virtual status_t InitTimer(struct kernel_args *kernelArgs);
|
|
||||||
|
|
||||||
virtual char SerialDebugGetChar();
|
|
||||||
virtual void SerialDebugPutChar(char c);
|
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds);
|
|
||||||
virtual uint32 GetHardwareRTC();
|
|
||||||
|
|
||||||
virtual void SetHardwareTimer(bigtime_t timeout);
|
|
||||||
virtual void ClearHardwareTimer(void);
|
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot);
|
|
||||||
|
|
||||||
private:
|
|
||||||
int fRTC;
|
|
||||||
};
|
|
||||||
|
|
||||||
// #pragma mark - Mac
|
|
||||||
|
|
||||||
} // namespace BPrivate
|
} // namespace BPrivate
|
||||||
|
|
||||||
using BPrivate::M68KPlatform;
|
using BPrivate::M68KPlatform;
|
||||||
|
|
||||||
|
//extern "C" M68KPlatform *instanciate_m68k_platform_amiga();
|
||||||
|
extern "C" M68KPlatform *instanciate_m68k_platform_atari();
|
||||||
|
//extern "C" M68KPlatform *instanciate_m68k_platform_mac();
|
||||||
|
//extern "C" M68KPlatform *instanciate_m68k_platform_next();
|
||||||
|
|
||||||
|
|
||||||
#endif // _KERNEL_M68K_ARCH_PLATFORM_H
|
#endif // _KERNEL_M68K_ARCH_PLATFORM_H
|
||||||
|
|
|
@ -17,11 +17,6 @@
|
||||||
#include <real_time_clock.h>
|
#include <real_time_clock.h>
|
||||||
#include <util/kernel_cpp.h>
|
#include <util/kernel_cpp.h>
|
||||||
|
|
||||||
using BPrivate::M68KAtari;
|
|
||||||
//using BPrivate::M68KAmiga;
|
|
||||||
//using BPrivate::M68KMac;
|
|
||||||
//using BPrivate::M68KNext;
|
|
||||||
|
|
||||||
|
|
||||||
static M68KPlatform *sM68KPlatform;
|
static M68KPlatform *sM68KPlatform;
|
||||||
|
|
||||||
|
@ -48,29 +43,25 @@ M68KPlatform::Default()
|
||||||
// # pragma mark -
|
// # pragma mark -
|
||||||
|
|
||||||
|
|
||||||
// static buffer for constructing the actual M68KPlatform
|
|
||||||
static char *sM68KPlatformBuffer[sizeof(M68KAtari)];
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
arch_platform_init(struct kernel_args *kernelArgs)
|
arch_platform_init(struct kernel_args *kernelArgs)
|
||||||
{
|
{
|
||||||
#warning M68K: switch platform from kernel args
|
|
||||||
// only Atari supported for now
|
// only Atari supported for now
|
||||||
switch (kernelArgs->arch_args.platform) {
|
switch (kernelArgs->arch_args.platform) {
|
||||||
#if 0
|
#if 0
|
||||||
case M68K_PLATFORM_AMIGA:
|
case M68K_PLATFORM_AMIGA:
|
||||||
sM68KPlatform = new(sM68KPlatformBuffer) M68KAmiga;
|
sM68KPlatform = instanciate_m68k_platform_amiga();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case M68K_PLATFORM_ATARI:
|
case M68K_PLATFORM_ATARI:
|
||||||
sM68KPlatform = new(sM68KPlatformBuffer) M68KAtari;
|
sM68KPlatform = instanciate_m68k_platform_atari();
|
||||||
break;
|
break;
|
||||||
#if 0
|
#if 0
|
||||||
case M68K_PLATFORM_MAC:
|
case M68K_PLATFORM_MAC:
|
||||||
sM68KPlatform = new(sM68KPlatformBuffer) M68KApple;
|
sM68KPlatform = instanciate_m68k_platform_mac();
|
||||||
break;
|
break;
|
||||||
case M68K_PLATFORM_NEXT:
|
case M68K_PLATFORM_NEXT:
|
||||||
sM68KPlatform = new(sM68KPlatformBuffer) M68KNext;
|
sM68KPlatform = instanciate_m68k_platform_next();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
|
|
||||||
#include <arch_cpu.h>
|
#include <arch_cpu.h>
|
||||||
|
#include <arch_platform.h>
|
||||||
#include <arch/system_info.h>
|
#include <arch/system_info.h>
|
||||||
#include <boot/kernel_args.h>
|
#include <boot/kernel_args.h>
|
||||||
|
|
||||||
|
@ -30,7 +31,7 @@ arch_get_system_info(system_info *info, size_t size)
|
||||||
info->cpu_clock_speed = sCPUClockFrequency;
|
info->cpu_clock_speed = sCPUClockFrequency;
|
||||||
info->bus_clock_speed = sBusClockFrequency;
|
info->bus_clock_speed = sBusClockFrequency;
|
||||||
|
|
||||||
info->platform_type = B_MAC_PLATFORM;//XXX
|
info->platform_type = M68KPlatform::Default()->PlatformType();
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +45,7 @@ arch_system_info_init(struct kernel_args *args)
|
||||||
sCPUClockFrequency = args->arch_args.cpu_frequency;
|
sCPUClockFrequency = args->arch_args.cpu_frequency;
|
||||||
sBusClockFrequency = args->arch_args.bus_frequency;
|
sBusClockFrequency = args->arch_args.bus_frequency;
|
||||||
|
|
||||||
sCPURevision = 0x68030; //XXX
|
sCPURevision = args->arch_args.cpu_type; //XXX
|
||||||
sCPUType = B_CPU_M68K;
|
sCPUType = B_CPU_M68K;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
|
@ -13,12 +13,50 @@
|
||||||
#include <real_time_clock.h>
|
#include <real_time_clock.h>
|
||||||
#include <util/kernel_cpp.h>
|
#include <util/kernel_cpp.h>
|
||||||
|
|
||||||
|
|
||||||
|
namespace BPrivate {
|
||||||
|
|
||||||
|
//class MfpPIC;
|
||||||
|
|
||||||
|
// #pragma mark - Atari (Falcon)
|
||||||
|
|
||||||
|
class M68KAtari : public M68KPlatform {
|
||||||
|
public:
|
||||||
|
M68KAtari();
|
||||||
|
virtual ~M68KAtari();
|
||||||
|
|
||||||
|
virtual status_t Init(struct kernel_args *kernelArgs);
|
||||||
|
virtual status_t InitSerialDebug(struct kernel_args *kernelArgs);
|
||||||
|
virtual status_t InitPostVM(struct kernel_args *kernelArgs);
|
||||||
|
virtual status_t InitPIC(struct kernel_args *kernelArgs);
|
||||||
|
virtual status_t InitRTC(struct kernel_args *kernelArgs,
|
||||||
|
struct real_time_data *data);
|
||||||
|
virtual status_t InitTimer(struct kernel_args *kernelArgs);
|
||||||
|
|
||||||
|
virtual char SerialDebugGetChar();
|
||||||
|
virtual void SerialDebugPutChar(char c);
|
||||||
|
|
||||||
|
virtual void SetHardwareRTC(uint32 seconds);
|
||||||
|
virtual uint32 GetHardwareRTC();
|
||||||
|
|
||||||
|
virtual void SetHardwareTimer(bigtime_t timeout);
|
||||||
|
virtual void ClearHardwareTimer(void);
|
||||||
|
|
||||||
|
virtual void ShutDown(bool reboot);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int fRTC;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace BPrivate
|
||||||
|
|
||||||
using BPrivate::M68KAtari;
|
using BPrivate::M68KAtari;
|
||||||
|
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
M68KAtari::M68KAtari()
|
M68KAtari::M68KAtari()
|
||||||
: M68KPlatform(M68K_PLATFORM_ATARI),
|
: M68KPlatform(B_ATARI_PLATFORM, M68K_PLATFORM_ATARI),
|
||||||
fRTC(-1)
|
fRTC(-1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -133,3 +171,13 @@ M68KAtari::ShutDown(bool reboot)
|
||||||
{
|
{
|
||||||
panic("WRITEME");
|
panic("WRITEME");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static buffer for constructing the actual M68KPlatform
|
||||||
|
static char *sM68KPlatformBuffer[sizeof(M68KAtari)];
|
||||||
|
#warning PTR HERE ???
|
||||||
|
|
||||||
|
|
||||||
|
M68KPlatform *instanciate_m68k_platform_atari()
|
||||||
|
{
|
||||||
|
return new(sM68KPlatformBuffer) M68KAtari;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue