6d0e289120b724ab0a8ffc78cfcfbd3c13af972a
[coreboot.git] / src / cpu / amd / model_gx1 / gx_setup.inc
1 /*
2     freebios/src/northbridge/nsc/gx1/gx_setup.inc
3
4     Copyright (c) 2002 Christer Weinigel <wingel@hack.org>
5
6     Setup the GX_BASE registers on a National Semiconductor Geode CPU
7 */
8
9 #include <cpu/amd/gx1def.h>
10
11         movl %eax, %ebp /* Preserve bist */
12
13 gx_setup_start:
14         leal    gx_setup_table, %esi
15         movl    $gx_setup_len, %ecx
16         movl    $GX_BASE, %edi
17
18 gx_setup_loop:
19         movw    (%esi), %di             /* Only read the low word of address */
20         addl    $4, %esi
21         movl    (%esi), %eax            /* Data */
22         addl    $4, %esi
23         movl    %eax, (%edi)
24         loop    gx_setup_loop
25
26         jmp     gx_setup_end
27
28 gx_setup_table:
29         /* Allow writes to config registers */
30         .long   DC_UNLOCK, DC_UNLOCK_MAGIC
31         .long   DC_GENERAL_CFG, 0
32         .long   DC_UNLOCK, 0
33
34         .long   BC_DRAM_TOP, 0x3fffffff
35         .long   BC_XMAP_1, 0x60
36         .long   BC_XMAP_2, 0
37         .long   BC_XMAP_3, 0
38
39         .long   MC_BANK_CFG, 0x00700070 /* No DIMMS installed */
40         .long   MC_MEM_CNTRL1, XBUSARB
41         .long   MC_GBASE_ADD, 0x7ff     /* Almost 1GB */
42 gx_setup_len = (.-gx_setup_table)/8
43
44 gx_setup_end:
45         nop
46
47         movl %ebp, %eax /* Restore bist */