2 Copyright © 2013, The AROS Development Team. All rights reserved.
7 #include <aros/debug.h>
9 #include <proto/exec.h>
10 #include <proto/kernel.h>
11 #include <aros/symbolsets.h>
13 #include <resources/processor.h>
15 #include "processor_intern.h"
16 #include "processor_arch_intern.h"
18 LONG
Processor_Init(struct ProcessorBase
* ProcessorBase
)
20 struct ARMProcessorInformation
**sysprocs
;
23 D(bug("[processor.ARM] :%s()\n", __PRETTY_FUNCTION__
));
25 sysprocs
= AllocVec(ProcessorBase
->cpucount
* sizeof(APTR
), MEMF_ANY
| MEMF_CLEAR
);
29 for (i
= 0; i
< ProcessorBase
->cpucount
; i
++)
31 sysprocs
[i
] = AllocMem(sizeof(struct ARMProcessorInformation
), MEMF_CLEAR
);
36 ProcessorBase
->Private1
= sysprocs
;
38 /* Boot CPU is number 0. Fill in its data. */
39 ReadProcessorInformation(sysprocs
[0]);
41 if (sysprocs
[0]->Family
>= CPUFAMILY_ARM_3
)
45 if ((sysprocs
[0]->Family
& 0xF) == 0)
47 else if ((sysprocs
[0]->Family
& 0x7) == 0x7)
49 else if ((sysprocs
[0]->Family
& 0x7) > 2)
51 else if ((sysprocs
[0]->Family
& 0x7) > 1)
54 bug("[processor.ARM] %s ARMv%d Processor Core\n", sysprocs
[0]->VendorID
, armvers
);
58 bug("[processor.ARM] %s ARM Processor core\n", sysprocs
[0]->VendorID
);
60 bug("[processor.ARM] Cache Info:\n");
61 bug("[processor.ARM] L1 Data : %dKb\n", sysprocs
[0]->L1DataCacheSize
);
62 bug("[processor.ARM] L1 Instr. : %dKb\n", sysprocs
[0]->L1InstructionCacheSize
);
67 ADD2INITLIB(Processor_Init
, 1);