2 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
12 #include <exec/types.h>
15 #include <exec/nodes.h>
17 #ifndef UTILITY_UTILITY_H
18 #include <utility/utility.h>
21 #include <hidd/hidd.h>
24 # include <exec/lists.h>
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>
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
62 #define memcpy(_d, _s, _len) \
67 ((char *)_d)[len-1] = ((char *)_s)[len-1];\
73 /* Temporary information */
77 void scr_RawPutChars(char *, int);
83 #define rkprintf(x...) scr_RawPutChars(tab, snprintf(tab,126, x))
87 #define clr() /* eps */
88 #define rkprintf(x...) /* eps */
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 */