- init PIC earlier
- stub out RTC git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28016 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -334,6 +334,7 @@ arch_int_init(kernel_args *args)
|
|||||||
vbr = args->arch_args.phys_vbr;
|
vbr = args->arch_args.phys_vbr;
|
||||||
/* point VBR to the new table */
|
/* point VBR to the new table */
|
||||||
asm volatile ("movec %0,%%vbr" : : "r"(vbr):);
|
asm volatile ("movec %0,%%vbr" : : "r"(vbr):);
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,7 +342,9 @@ arch_int_init(kernel_args *args)
|
|||||||
status_t
|
status_t
|
||||||
arch_int_init_post_vm(kernel_args *args)
|
arch_int_init_post_vm(kernel_args *args)
|
||||||
{
|
{
|
||||||
return B_OK;
|
status_t err;
|
||||||
|
err = M68KPlatform::Default()->InitPIC(args);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -502,9 +505,6 @@ probe_pic_device(device_node_handle node, PICModuleList &picModules)
|
|||||||
status_t
|
status_t
|
||||||
arch_int_init_post_device_manager(struct kernel_args *args)
|
arch_int_init_post_device_manager(struct kernel_args *args)
|
||||||
{
|
{
|
||||||
status_t err;
|
|
||||||
err = M68KPlatform::Default()->InitPIC(args);
|
|
||||||
return err;
|
|
||||||
#if 0 /* PIC modules */
|
#if 0 /* PIC modules */
|
||||||
// get the interrupt controller driver modules
|
// get the interrupt controller driver modules
|
||||||
PICModuleList picModules;
|
PICModuleList picModules;
|
||||||
|
|||||||
@@ -23,6 +23,11 @@
|
|||||||
|
|
||||||
#define MFP0_VECTOR_BASE 64
|
#define MFP0_VECTOR_BASE 64
|
||||||
#define MFP1_VECTOR_BASE (MFP0_VECTOR_BASE+16)
|
#define MFP1_VECTOR_BASE (MFP0_VECTOR_BASE+16)
|
||||||
|
|
||||||
|
#define RTC_BASE 0xFFFF8960
|
||||||
|
|
||||||
|
#define RTC_VECTOR (MFP1_VECTOR_BASE+14)
|
||||||
|
|
||||||
// ?
|
// ?
|
||||||
#define SCC_C0_VECTOR_BASE (MFP1_VECTOR_BASE+16)
|
#define SCC_C0_VECTOR_BASE (MFP1_VECTOR_BASE+16)
|
||||||
// ??
|
// ??
|
||||||
@@ -89,6 +94,19 @@ public:
|
|||||||
int fVector;
|
int fVector;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class RTC {
|
||||||
|
public:
|
||||||
|
RTC(uint32 base, int vector);
|
||||||
|
~RTC();
|
||||||
|
|
||||||
|
uint32 Base() const { return fBase; };
|
||||||
|
int Vector() const { return fVector; };
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint32 fBase;
|
||||||
|
int fVector;
|
||||||
|
};
|
||||||
|
|
||||||
M68KAtari();
|
M68KAtari();
|
||||||
virtual ~M68KAtari();
|
virtual ~M68KAtari();
|
||||||
|
|
||||||
@@ -121,10 +139,10 @@ private:
|
|||||||
MFP *MFPForIrq(int irq);
|
MFP *MFPForIrq(int irq);
|
||||||
static int32 MFPTimerInterrupt(void *data);
|
static int32 MFPTimerInterrupt(void *data);
|
||||||
|
|
||||||
int fRTC;
|
|
||||||
|
|
||||||
MFP *fMFP[2];
|
MFP *fMFP[2];
|
||||||
|
|
||||||
|
RTC *fRTC;
|
||||||
|
|
||||||
// native features (ARAnyM emulator)
|
// native features (ARAnyM emulator)
|
||||||
uint32 (*nfGetID)(const char *name);
|
uint32 (*nfGetID)(const char *name);
|
||||||
int32 (*nfCall)(uint32 ID, ...);
|
int32 (*nfCall)(uint32 ID, ...);
|
||||||
@@ -203,13 +221,30 @@ M68KAtari::MFP::AcknowledgeIOInterrupt(int irq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - M68KAtari::RTc
|
||||||
|
|
||||||
|
|
||||||
|
static char sRTCBuffer[sizeof(M68KAtari::RTC)];
|
||||||
|
|
||||||
|
// constructor
|
||||||
|
M68KAtari::RTC::RTC(uint32 base, int vector)
|
||||||
|
{
|
||||||
|
fBase = base;
|
||||||
|
fVector = vector;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
M68KAtari::RTC::~RTC()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - M68KAtari
|
// #pragma mark - M68KAtari
|
||||||
|
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
M68KAtari::M68KAtari()
|
M68KAtari::M68KAtari()
|
||||||
: M68KPlatform(B_ATARI_PLATFORM, M68K_PLATFORM_ATARI),
|
: M68KPlatform(B_ATARI_PLATFORM, M68K_PLATFORM_ATARI)
|
||||||
fRTC(-1)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +304,6 @@ M68KAtari::InitPostVM(struct kernel_args *kernelArgs)
|
|||||||
status_t
|
status_t
|
||||||
M68KAtari::InitPIC(struct kernel_args *kernelArgs)
|
M68KAtari::InitPIC(struct kernel_args *kernelArgs)
|
||||||
{
|
{
|
||||||
panic("WRITEME");
|
|
||||||
fMFP[0] = new(sMFP0Buffer) M68KAtari::MFP(MFP0_BASE, MFP0_VECTOR_BASE);
|
fMFP[0] = new(sMFP0Buffer) M68KAtari::MFP(MFP0_BASE, MFP0_VECTOR_BASE);
|
||||||
//if (kernelArgs->arch_args.machine == /*TT*/) {
|
//if (kernelArgs->arch_args.machine == /*TT*/) {
|
||||||
fMFP[1] = new(sMFP1Buffer) M68KAtari::MFP(MFP1_BASE, MFP1_VECTOR_BASE);
|
fMFP[1] = new(sMFP1Buffer) M68KAtari::MFP(MFP1_BASE, MFP1_VECTOR_BASE);
|
||||||
@@ -282,8 +316,8 @@ status_t
|
|||||||
M68KAtari::InitRTC(struct kernel_args *kernelArgs,
|
M68KAtari::InitRTC(struct kernel_args *kernelArgs,
|
||||||
struct real_time_data *data)
|
struct real_time_data *data)
|
||||||
{
|
{
|
||||||
panic("WRITEME");
|
fRTC = new(sRTCBuffer) M68KAtari::RTC(RTC_BASE, RTC_VECTOR);
|
||||||
return B_NO_INIT;
|
#warning M68K: FIXME
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -496,12 +530,14 @@ M68KAtari::AcknowledgeIOInterrupt(int irq)
|
|||||||
void
|
void
|
||||||
M68KAtari::SetHardwareRTC(uint32 seconds)
|
M68KAtari::SetHardwareRTC(uint32 seconds)
|
||||||
{
|
{
|
||||||
|
#warning M68K: WRITEME
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint32
|
||||||
M68KAtari::GetHardwareRTC()
|
M68KAtari::GetHardwareRTC()
|
||||||
{
|
{
|
||||||
|
#warning M68K: WRITEME
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user