- Delayed commit of code for the ASUS A7M motherboard
- VIA 686 cleanups from the A7M code (it now works in a different pci slot). - Update of assembly printing routines to use the debug levels: TTYS0_TX_CHAR now becomes CONSOLE_<LEVEL>_TX_CHAR. It's more verbose but now the controls are the same as with the C code. - Break off of loglevel.h from printk.h. loglevel.h is safe for both the assembly routines and the C code to include. - Next round of commits for the supermicro p4dc6 - SMP setup updates (Rons board is broken) I now allow the other SMP processors to report their existence. I really need to add a minimum time to run but that hasn't happened yet. - SMP per motherboard table of apicids, as the assumption that they would always be 0 & 1 with only two cpus fails. - RDRAM setup updates. The code isn't done but it now works on more than one board at a time. - More cacheram work. Minor bug fixes and some macros to use it from C. - Entry point changes so we no longer have to jump over our gdt. - Added/Audited the cpufixup for the i786 - IDE intialization for the 82801 ich2 chip.
This commit is contained in:
parent
7ca28e1b0f
commit
d96aab9e06
79 changed files with 2030 additions and 731 deletions
|
|
@ -7,6 +7,8 @@
|
|||
#ifdef CPU_FIXUP
|
||||
# if defined(k7)
|
||||
# define cpufixup(totalram) k7_cpufixup(totalram)
|
||||
# elif defined(i786)
|
||||
# define cpufixup(totalram) p6_cpufixup(totalram)
|
||||
# elif defined(i686)
|
||||
# define cpufixup(totalram) p6_cpufixup(totalram)
|
||||
# endif
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include <cpu/p6/l2_cache.h>
|
||||
|
||||
#ifdef CONFIGURE_L2_CACHE
|
||||
# if defined(i686)
|
||||
# if defined(i686) && !defined(i786)
|
||||
# define configure_l2_cache() p6_configure_l2_cache()
|
||||
# endif
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ static inline void apic_wait_icr_idle(void)
|
|||
|
||||
#ifdef CONFIG_X86_GOOD_APIC
|
||||
# define FORCE_READ_AROUND_WRITE 0
|
||||
# define apic_read_around(x)
|
||||
# define apic_read_around(x) apic_read(x)
|
||||
# define apic_write_around(x,y) apic_write((x),(y))
|
||||
#else
|
||||
# define FORCE_READ_AROUND_WRITE 1
|
||||
|
|
@ -147,10 +147,11 @@ static inline void apic_wait_icr_idle(void)
|
|||
# define apic_write_around(x,y) apic_write_atomic((x),(y))
|
||||
#endif
|
||||
|
||||
static inline unsigned long apic_remote_read(int apicid, int reg)
|
||||
static inline int apic_remote_read(int apicid, int reg, unsigned long *pvalue)
|
||||
{
|
||||
int timeout;
|
||||
unsigned long status, result;
|
||||
unsigned long status;
|
||||
int result;
|
||||
apic_wait_icr_idle();
|
||||
apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(apicid));
|
||||
apic_write_around(APIC_ICR, APIC_DM_REMRD | (reg >> 4));
|
||||
|
|
@ -164,10 +165,8 @@ static inline unsigned long apic_remote_read(int apicid, int reg)
|
|||
|
||||
result = -1;
|
||||
if (status == APIC_ICR_RR_VALID) {
|
||||
result = apic_read(APIC_RRR);
|
||||
}
|
||||
else {
|
||||
printk_err("remote apic read failed\n");
|
||||
*pvalue = apic_read(APIC_RRR);
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
26
src/include/loglevel.h
Normal file
26
src/include/loglevel.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef LOGLEVEL_H
|
||||
#define LOGLEVEL_H
|
||||
|
||||
/* Safe for inclusion in assembly */
|
||||
|
||||
#ifndef MAXIMUM_CONSOLE_LOGLEVEL
|
||||
#define MAXIMUM_CONSOLE_LOGLEVEL 8
|
||||
#endif
|
||||
|
||||
#if (DEFAULT_CONSOLE_LOGLEVEL <= MAXIMUM_CONSOLE_LOGLEVEL)
|
||||
#define ASM_CONSOLE_LOGLEVEL DEFAULT_CONSOLE_LOGLEVEL
|
||||
#else
|
||||
#define ASM_CONSOLE_LOGLEVEL MAXIMUM_CONSOLE_LOGLEVEL
|
||||
#endif
|
||||
|
||||
#define BIOS_EMERG 0 /* system is unusable */
|
||||
#define BIOS_ALERT 1 /* action must be taken immediately */
|
||||
#define BIOS_CRIT 2 /* critical conditions */
|
||||
#define BIOS_ERR 3 /* error conditions */
|
||||
#define BIOS_WARNING 4 /* warning conditions */
|
||||
#define BIOS_NOTICE 5 /* normal but significant condition */
|
||||
#define BIOS_INFO 6 /* informational */
|
||||
#define BIOS_DEBUG 7 /* debug-level messages */
|
||||
#define BIOS_SPEW 8 /* Way too many details */
|
||||
|
||||
#endif /* LOGLEVEL_H */
|
||||
|
|
@ -262,6 +262,8 @@
|
|||
#define PCI_DEVICE_ID_AMD_SCSI 0x2020
|
||||
#define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006
|
||||
#define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C
|
||||
#define PCI_DEVICE_ID_AMD_761_0 0x700E
|
||||
#define PCI_DEVICE_ID_AMD_761_1 0x700F
|
||||
#define PCI_DEVICE_ID_AMD_COBRA_7400 0x7400
|
||||
#define PCI_DEVICE_ID_AMD_COBRA_7401 0x7401
|
||||
#define PCI_DEVICE_ID_AMD_COBRA_7403 0x7403
|
||||
|
|
|
|||
|
|
@ -1,19 +1,7 @@
|
|||
#ifndef PRINTK_H
|
||||
#define PRINTK_H
|
||||
|
||||
#ifndef MAXIMUM_CONSOLE_LOGLEVEL
|
||||
#define MAXIMUM_CONSOLE_LOGLEVEL 8
|
||||
#endif
|
||||
|
||||
#define BIOS_EMERG 0 /* system is unusable */
|
||||
#define BIOS_ALERT 1 /* action must be taken immediately */
|
||||
#define BIOS_CRIT 2 /* critical conditions */
|
||||
#define BIOS_ERR 3 /* error conditions */
|
||||
#define BIOS_WARNING 4 /* warning conditions */
|
||||
#define BIOS_NOTICE 5 /* normal but significant condition */
|
||||
#define BIOS_INFO 6 /* informational */
|
||||
#define BIOS_DEBUG 7 /* debug-level messages */
|
||||
#define BIOS_SPEW 8 /* Way too many details */
|
||||
#include <loglevel.h>
|
||||
|
||||
extern int console_loglevel;
|
||||
int do_printk(int msg_level, const char *fmt, ...);
|
||||
|
|
@ -28,39 +16,39 @@ int do_printk(int msg_level, const char *fmt, ...);
|
|||
#define printk_debug(fmt, arg...) do_printk(BIOS_DEBUG ,fmt, ##arg)
|
||||
#define printk_spew(fmt, arg...) do_printk(BIOS_SPEW ,fmt, ##arg)
|
||||
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 0
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_EMERG
|
||||
#undef printk_emerg
|
||||
#define printk_emerg(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 1
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_ALERT
|
||||
#undef printk_alert
|
||||
#define printk_alart(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 2
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_CRIT
|
||||
#undef printk_crit
|
||||
#define printk_crit(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 3
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_ERR
|
||||
#undef printk_err
|
||||
#define printk_err(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 4
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_WARNING
|
||||
#undef printk_warning
|
||||
#define printk_warning(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 5
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_NOTICE
|
||||
#undef printk_notice
|
||||
#define printk_notice(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 6
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_INFO
|
||||
#undef printk_info
|
||||
#define printk_info(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 7
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_DEBUG
|
||||
#undef printk_debug
|
||||
#define printk_debug(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= 8
|
||||
#if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_SPEW
|
||||
#undef printk_spew
|
||||
#define printk_spew(fmt, arg...) do {} while(0)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,9 +3,10 @@
|
|||
|
||||
#ifdef SMP
|
||||
#include <smp/atomic.h>
|
||||
int this_processors_id(void);
|
||||
void stop_cpu(int processor_id);
|
||||
int start_cpu(int processor_id);
|
||||
unsigned long this_processors_id(void);
|
||||
int processor_index(unsigned long processor_id);
|
||||
void stop_cpu(unsigned long processor_id);
|
||||
int start_cpu(unsigned long processor_id);
|
||||
void startup_other_cpus(unsigned long *processor_map);
|
||||
#else
|
||||
#define this_processors_id() 0
|
||||
|
|
|
|||
5
src/include/southbridge/intel/82801.h
Normal file
5
src/include/southbridge/intel/82801.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
void ich2_enable_serial_irqs(void);
|
||||
void ich2_lpc_route_dma(unsigned char mask);
|
||||
void ich2_enable_ioapic(void);
|
||||
void ich2_enable_ide(int enable_a, int enable_b);
|
||||
Loading…
Add table
Add a link
Reference in a new issue