- 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:
François Revol
2008-10-12 23:33:11 +00:00
parent e84abff2bd
commit 94b1f00114
2 changed files with 47 additions and 11 deletions
+4 -4
View File
@@ -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;
} }