fix filenames
[AROS.git] / arch / i386-pc / cpu / cpu_intern.h
blobaa6a3aa7e935a4151d668691dd6725b5af9b976e
1 /*
2 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: english
7 */
8 #ifndef _CPU_INTERN_H
9 #define _CPU_INTERN_H
11 #ifndef EXEC_TYPES_H
12 #include <exec/types.h>
13 #endif
14 #ifndef EXEC_NODES_H
15 #include <exec/nodes.h>
16 #endif
17 #ifndef UTILITY_UTILITY_H
18 #include <utility/utility.h>
19 #endif
20 #ifndef HIDD_HIDD_H
21 #include <hidd/hidd.h>
22 #endif
23 #ifndef EXEC_LISTS_H
24 # include <exec/lists.h>
25 #endif
27 #define DEBUG 1
29 #include <exec/resident.h>
30 #include <exec/execbase.h>
31 #include <exec/memory.h>
32 #include <hardware/intbits.h>
33 #include <dos/dosextens.h>
35 #include <aros/arossupportbase.h>
36 #include <aros/asmcall.h>
37 #include <aros/config.h>
38 #include <aros/debug.h>
39 #define DEBUG_NAME_STR "[" MOD_NAME_STRING "]"
40 #include <aros/multiboot.h>
42 #include <hardware/custom.h>
44 #include <proto/exec.h>
45 #include <proto/cpu.h>
47 #include <aros/debug.h>
49 #include <stddef.h>
50 #include <stdio.h>
51 #include <string.h>
53 /* Edit the following files at compiler/include/cpu */
55 #include <hardware/cpu/cpu.h> /* NicJA - Experimental CPU specific Data Structs */
56 #include <hardware/cpu/cpu_i386.h> /* NicJA - Experimental CPU specific Data Structs */
57 #include <hardware/cpu/cpu_mpspec.h> /* NicJA - Experimental SMP specific Data Structs */
59 #include LC_LIBDEFS_FILE
61 #undef memcpy
62 #define memcpy(_d, _s, _len) \
63 { \
64 int len = _len; \
65 while (len) \
66 { \
67 ((char *)_d)[len-1] = ((char *)_s)[len-1];\
68 len--; \
69 } \
73 /* Temporary information */
74 #if 1
76 void clr();
77 void scr_RawPutChars(char *, int);
79 char tab[127];
80 #ifdef rkprintf
81 # undef rkprintf
82 #endif
83 #define rkprintf(x...) scr_RawPutChars(tab, snprintf(tab,126, x))
85 #else
87 #define clr() /* eps */
88 #define rkprintf(x...) /* eps */
90 #endif
92 #define i386_cpuid(in,a,b,c,d) asm("cpuid": "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (in));
94 struct CPUBase *CPUBase;
96 #define APICBase (CPUBase->CPUB_APICBase)
97 #define SysBase (CPUBase->CPUB_SysBase)
99 /**********************************************************************/
100 /* from smp.c ........... */
101 void MP_processor_info ( struct mpc_config_processor *mc, struct SMP_Definition *SMP_Group );
102 void MP_bus_info ( struct mpc_config_bus *mc, struct SMP_Definition *SMP_Group );
103 void MP_ioapic_info ( struct mpc_config_ioapic *mc, struct SMP_Definition *SMP_Group );
104 void MP_intsrc_info ( struct mpc_config_intsrc *mc, struct SMP_Definition *SMP_Group );
105 void MP_lintsrc_info ( struct mpc_config_lintsrc *mc, struct SMP_Definition *SMP_Group );
106 void MP_translation_info ( struct mpc_config_translation *mc, struct SMP_Definition *SMP_Group );
108 int mpfcb_checksum( unsigned char *mpcb, int len );
109 void smp_read_mpc_oem( struct mp_config_oemtable *oemtable, unsigned short oemsize, struct SMP_Definition *SMP_Group );
110 void mps_oem_check ( struct mp_config_table *mpcf, char *oem, char *productid, struct SMP_Definition *SMP_Group );
111 int smp_alloc_memory ( void );
112 APTR scan_for_smpconfig ( APTR base, unsigned long length );
113 APTR find_smp_config ( void );
114 void get_smp_config ( struct intel_mp_confblock *mpcfb, struct CPUBase *CPUBase );
115 struct SMP_Definition *smp_read_mpcfb ( struct mp_config_table *mpcf, struct CPUBase *CPUBase );
117 #endif /* _CPU_INTERN_H */