/* freebios/src/northbridge/nsc/gx1/cpu_setup.inc Copyright (c) 2002 Christer Weinigel Initialize the GX1 CPU configuration registers */ /* USES: esi, ecx, eax */ #include movl %eax, %ebp /* preserve bist */ cpu_setup_start: leal cpu_setup_table, %esi movl $cpu_setup_len, %ecx cpu_setup_loop: movw (%esi), %ax addl $2, %esi outb %al, $0x22 movb %ah, %al outb %al, $0x23 loop cpu_setup_loop movb $0xff, %al /* DIR1 -- Identification Register 1 */ outb %al, $0x22 inb $0x23, %al cmpb $0x63, %al /* Revision for GXLV rev 3 */ jbe cpu_no_ccr4 movb $0xe8, %al /* CCR4 */ outb %al, $0x22 inb $0x23, %al orb $0x20, %al /* Enable FPU Fast Mode */ outb %al, $0x23 movb $0xf0, %al /* PCR1 --- Performace Control */ outb %al, $0x22 inb $0x23, %al orb $0x02, %al /* Incrementor on, whatever that is */ outb %al, $0x23 movb $0x20, %al /* PCR0 --- Performace Control */ outb %al, $0x22 inb $0x23, %al orb $0x20, %al /* Must be 1 according to data book */ orb $0x04, %al /* Incrementor Margin 10 */ outb %al, $0x23 cpu_no_ccr4: jmp cpu_setup_end cpu_setup_table: .byte 0xc1, 0x00 /* NO SMIs */ .byte 0xc3, 0x14 /* Enable CPU config register */ .byte 0x20, 0x00 .byte 0xb8, GX_BASE>>30 /* Enable GXBASE address */ .byte 0xc2, 0x00 .byte 0xe8, 0x98 .byte 0xc3, 0xf8 /* Enable CPU config register */ cpu_setup_len = (.-cpu_setup_table)/2 cpu_setup_end: nop movl %ebp, %eax /* Restore bist */