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"
20 LONG
Processor_Init(struct ProcessorBase
* ProcessorBase
)
22 struct ARMProcessorInformation
**sysprocs
;
25 D(bug("[processor.ARM] :%s()\n", __PRETTY_FUNCTION__
));
27 sysprocs
= AllocVec(ProcessorBase
->cpucount
* sizeof(APTR
), MEMF_ANY
| MEMF_CLEAR
);
31 for (i
= 0; i
< ProcessorBase
->cpucount
; i
++)
33 sysprocs
[i
] = AllocMem(sizeof(struct ARMProcessorInformation
), MEMF_CLEAR
);
38 ProcessorBase
->Private1
= sysprocs
;
40 /* Boot CPU is number 0. Fill in its data. */
41 ReadProcessorInformation(sysprocs
[0]);
44 if (sysprocs
[0]->FamilyString
)
46 bug("[processor.ARM] %s ARM%s Processor Core\n", sysprocs
[0]->Vendor
, sysprocs
[0]->FamilyString
);
50 bug("[processor.ARM] %s ARM Processor Core (unknown family)\n", sysprocs
[0]->Vendor
);
53 if (sysprocs
[0]->Features1
& FEATF_FPU_VFP4
)
55 bug("[processor.ARM] VFPv4 Co-Processor\n");
57 else if (sysprocs
[0]->Features1
& FEATF_FPU_VFP3_16
)
59 bug("[processor.ARM] VFPv3 [16Double] Co-Processor\n");
61 else if (sysprocs
[0]->Features1
& FEATF_FPU_VFP3
)
63 bug("[processor.ARM] VFPv3 Co-Processor\n");
65 else if (sysprocs
[0]->Features1
& FEATF_FPU_VFP2
)
67 bug("[processor.ARM] VFPv2 Co-Processor\n");
71 bug("[processor.ARM] VFPv1 Co-Processor\n");
74 if (sysprocs
[0]->Features1
& FEATF_NEON
)
76 bug("[processor.ARM] NEON SIMD Extensions\n");
79 bug("[processor.ARM] Cache Info:\n");
80 bug("[processor.ARM] L1 Data : %dKb\n", sysprocs
[0]->L1DataCacheSize
);
81 bug("[processor.ARM] L1 Instr. : %dKb\n", sysprocs
[0]->L1InstructionCacheSize
);
87 ADD2INITLIB(Processor_Init
, 1);