diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2010-03-21 13:52:06 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2010-03-21 13:52:06 +0000 |
commit | 566af0529b8d2b4dce7c97bd8fe0ff07a63bf0ea (patch) | |
tree | 02c1eb9ddc9914407d36e59bd471cb14aa31751d | |
parent | 1806556591e8663706b61628918462926cacfdb1 (diff) |
Update KL structure definitions to match IP35 use of previously unused fields.
No functional change yet.
-rw-r--r-- | sys/arch/sgi/include/mnode.h | 134 | ||||
-rw-r--r-- | sys/arch/sgi/sgi/ip27_machdep.c | 6 | ||||
-rw-r--r-- | sys/arch/sgi/sgi/sginode.c | 170 |
3 files changed, 226 insertions, 84 deletions
diff --git a/sys/arch/sgi/include/mnode.h b/sys/arch/sgi/include/mnode.h index 13f8b3762ec..a7d69814d07 100644 --- a/sys/arch/sgi/include/mnode.h +++ b/sys/arch/sgi/include/mnode.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mnode.h,v 1.13 2010/03/07 13:42:15 miod Exp $ */ +/* $OpenBSD: mnode.h,v 1.14 2010/03/21 13:52:03 miod Exp $ */ /* * Copyright (c) 2004 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -153,8 +153,9 @@ typedef struct lboard_s { unsigned char brd_brevision; /* board revision */ unsigned char brd_promver; /* board prom version, if any */ unsigned char brd_flags; /* Enabled, Disabled etc */ - unsigned char brd_slot; /* slot number */ - unsigned short brd_debugsw; /* Debug switches */ + unsigned char brd_slot; /* slot number (widget on IP35) */ + unsigned short brd_bus_num: 2, /* PIC bus number (IP35) */ + brd_unused: 14; short brd_module; /* module to which it belongs */ char brd_partition; /* Partition number */ unsigned short brd_diagval; /* diagnostic value */ @@ -178,6 +179,8 @@ typedef struct lboard_s { /* Definitions of board type and class */ #define IP27_BC_MASK 0xf0 +#define IP27_BT_MASK 0x0f + #define IP27_BC_NODE 0x10 #define IP27_BC_IO 0x20 #define IP27_BC_ROUTER 0x30 @@ -185,13 +188,29 @@ typedef struct lboard_s { #define IP27_BC_GRAF 0x50 #define IP27_BC_HDTV 0x60 #define IP27_BC_BRICK 0x70 - -#define IP27_BT_MASK 0x0f -#define IP27_BT_CPU 0x01 -#define IP27_BT_BASEIO 0x01 -#define IP27_BT_MPLANE8 0x01 - -#define IP27_BRD_BASEIO (IP27_BC_IO | IP27_BT_BASEIO) +#define IP27_BC_IO2 0x80 + +/* NODE types */ +#define IP27_BRD_CPU (IP27_BC_NODE | 0x01) +/* IO types */ +#define IP27_BRD_BASEIO (IP27_BC_IO | 0x01) /* IO6 */ +#define IP27_BRD_MSCSI (IP27_BC_IO | 0x02) +#define IP27_BRD_MENET (IP27_BC_IO | 0x03) +#define IP27_BRD_FDDI (IP27_BC_IO | 0x04) +#define IP27_BRD_PCI1 (IP27_BC_IO | 0x06) /* PCI shoebox */ +#define IP27_BRD_VME (IP27_BC_IO | 0x07) +#define IP27_BRD_MIO (IP27_BC_IO | 0x08) +#define IP27_BRD_FC (IP27_BC_IO | 0x09) +#define IP27_BRD_LINC (IP27_BC_IO | 0x0a) +/* MPLANE types */ +#define IP27_BRD_MPLANE8 (IP27_BC_MPLANE | 0x01) +#define IP27_BRD_IOBRICK_XBOW (IP27_BC_MPLANE | 0x02) +/* GRAF types */ +#define IP27_BRD_KONA (IP27_BC_GRAF | 0x01) +#define IP27_BRD_MGRAS (IP27_BC_GRAF | 0x03) +#define IP27_BRD_ODSY (IP27_BC_GRAF | 0x04) +/* BRICK types */ +#define IP27_BRD_IOBRICK (IP27_BC_BRICK | 0x00) #define IP27_BRD_IBRICK (IP27_BC_BRICK | 0x01) #define IP27_BRD_PBRICK (IP27_BC_BRICK | 0x02) #define IP27_BRD_XBRICK (IP27_BC_BRICK | 0x03) @@ -200,30 +219,44 @@ typedef struct lboard_s { #define IP27_BRD_PXBRICK (IP27_BC_BRICK | 0x06) #define IP27_BRD_IXBRICK (IP27_BC_BRICK | 0x07) #define IP27_BRD_CGBRICK (IP27_BC_BRICK | 0x08) - +/* IO2 types */ +#define IP27_BRD_DIVO (IP27_BC_IO2 | 0x01) +#define IP27_BRD_TPU (IP27_BC_IO2 | 0x02) +#define IP27_BRD_GSN (IP27_BC_IO2 | 0x03) +#define IP27_BRD_GSN_AUX (IP27_BC_IO2 | 0x04) +#define IP27_BRD_PCI3 (IP27_BC_IO2 | 0x05) /* PCI shoehorn */ +#define IP27_BRD_HIPPI (IP27_BC_IO2 | 0x06) +#define IP27_BRD_ATM (IP27_BC_IO2 | 0x07) /* Component info. Common info about a component. */ typedef struct klinfo_s { /* Generic info */ - unsigned char struct_type; /* type of this structure */ - unsigned char struct_version; /* version of this structure */ - unsigned char flags; /* Enabled, disabled etc */ - unsigned char revision; /* component revision */ - unsigned short diagval; /* result of diagnostics */ - unsigned short diagparm; /* diagnostic parameter */ - unsigned char inventory; /* previous inventory status */ - uint64_t nic; /* Must be aligned properly */ - unsigned char physid; /* physical id of component */ - unsigned int virtid; /* virtual id as seen by system */ - unsigned char widid; /* Widget id - if applicable */ - int16_t nasid; /* node number - from parent */ - char pad1; /* pad out structure. */ - char pad2; /* pad out structure. */ - void *arcs_compt; /* ptr to the arcs struct for ease*/ - klconf_off_t errinfo; /* component specific errors */ - unsigned short pad3; /* pci fields have moved over to */ - unsigned short pad4; /* klbri_t */ + unsigned char struct_type; /* type of this structure */ + unsigned char struct_version; /* version of this structure */ + unsigned char flags; /* Enabled, disabled etc */ + unsigned char revision; /* component revision */ + unsigned short diagval; /* result of diagnostics */ + unsigned short diagparm; /* diagnostic parameter */ + unsigned char inventory; /* previous inventory status */ + uint64_t nic; /* Must be aligned properly */ + unsigned char physid; /* physical id of component */ + unsigned int virtid; /* virtual id as seen by system */ + unsigned char widid; /* Widget id - if applicable */ + int16_t nasid; /* node number - from parent */ + unsigned short port: 2, /* (IP35) port on dual port controller */ + pci_bus_num: 2, /* (IP35) PCI bus number if on PIC */ + pci_multifunc: 1, + pci_func_num: 3,/* (IP35) PCI function number */ + pci_unused: 8; + char pad2; /* pad out structure. */ + void *arcs_compt; /* ptr to the arcs struct for ease*/ + klconf_off_t errinfo; /* component specific errors */ + unsigned short pad3; /* pci fields have moved over to */ + unsigned short pad4; /* klbri_t */ } klinfo_t; +#define KLINFO_PHYSID_PIC_BUS1 0x10 /* set if on PIC bus 1 */ +#define KLINFO_PHYSID_WIDGET_MASK 0x0f + #define KLINFO_ENABLED 0x01 #define KLINFO_FAILED 0x02 @@ -250,7 +283,6 @@ typedef struct klinfo_s { /* Generic info */ #define KLSTRUCT_HUB_UART 17 #define KLSTRUCT_IOC3ENET 18 #define KLSTRUCT_IOC3UART 19 -#define KLSTRUCT_UNUSED 20 #define KLSTRUCT_IOC3PCKM 21 #define KLSTRUCT_RAD 22 #define KLSTRUCT_HUB_TTY 23 @@ -260,8 +292,8 @@ typedef struct klinfo_s { /* Generic info */ #define KLSTRUCT_MOD_SERIAL_NUM 26 #define KLSTRUCT_IOC3MS 27 #define KLSTRUCT_TPU 28 -#define KLSTRUCT_GSN_A 29 -#define KLSTRUCT_GSN_B 30 +#define KLSTRUCT_GSN 29 +#define KLSTRUCT_GSN_AUX 30 #define KLSTRUCT_XTHD 31 #define KLSTRUCT_QLFIBRE 32 #define KLSTRUCT_FIREWIRE 33 @@ -272,6 +304,14 @@ typedef struct klinfo_s { /* Generic info */ #define KLSTRUCT_PEBRICK 38 #define KLSTRUCT_GIGENET 39 #define KLSTRUCT_IDE 40 +/* new IP53 values */ +#define KLSTRUCT_IOC4 41 +#define KLSTRUCT_IOC4UART 42 +#define KLSTRUCT_IOC4_TTY 43 +#define KLSTRUCT_IOC4PCKM 44 +#define KLSTRUCT_IOC4MS 45 +#define KLSTRUCT_IOC4_ATA 46 +#define KLSTRUCT_VGAGFX 47 typedef struct klport_s { int16_t port_nasid; @@ -283,7 +323,8 @@ typedef struct klport_s { typedef struct klcpu_s { klinfo_t cpu_info; uint16_t cpu_prid; /* Processor PRID value */ - uint16_t cpu_fpirr; /* FPU IRR value */ + uint16_t cpu_fpirr; /* IP27: FPU IRR value */ + /* IP35: mode information (?) */ uint16_t cpu_speed; /* Speed in MHZ */ uint16_t cpu_scachesz; /* secondary cache size in MB */ uint16_t cpu_scachespeed;/* secondary cache speed in MHz */ @@ -306,7 +347,7 @@ typedef struct klmembnk_m_s { int16_t membnk_memsz; /* Total memory in megabytes */ int16_t membnk_dimm_select; /* bank to phys addr mapping*/ int16_t membnk_bnksz[MD_MEM_BANKS_M]; /* Memory bank sizes */ - int16_t membnk_attr; + int16_t membnk_attr; /* directory memory, per bank */ } klmembnk_m_t; #define MD_MEM_BANKS_N 4 /* N-Mode */ @@ -315,7 +356,7 @@ typedef struct klmembnk_n_s { int16_t membnk_memsz; /* Total memory in megabytes */ int16_t membnk_dimm_select; /* bank to phys addr mapping*/ int16_t membnk_bnksz[MD_MEM_BANKS_N]; /* Memory bank sizes */ - int16_t membnk_attr; + int16_t membnk_attr; /* directory memory, per bank */ } klmembnk_n_t; /* KLSTRUCT_XBOW: Xbow */ @@ -331,16 +372,25 @@ typedef struct klxbow_s { #define XBOW_PORT_HUB 0x02 #define XBOW_PORT_ENABLE 0x04 +/* KLSTRUCT_SCSI: SCSI Bus, or single-bus SCSI Controller */ +#define MAX_SCSI_DEVS 16 +typedef struct klscsi_s { + klinfo_t scsi_info; + uint64_t scsi_specific; + uint8_t scsi_numdevs; + klconf_off_t scsi_devinfo[MAX_SCSI_DEVS]; +} klscsi_t; + /* KLSTRUCT_IOC3: Basic I/O Controller */ typedef struct klioc3_s { klinfo_t ioc3_info; unsigned char ioc3_ssram; /* Info about ssram */ unsigned char ioc3_nvram; /* Info about nvram */ - klinfo_t ioc3_superio; /* Info about superio */ klconf_off_t ioc3_tty_off; + klconf_off_t ioc3_kbd_off; + klinfo_t ioc3_superio; /* Info about superio */ klinfo_t ioc3_enet; klconf_off_t ioc3_enet_off; - klconf_off_t ioc3_kbd_off; } klioc3_t; /* KLSTRUCT_IOC3_TTY: IOC3 attached TTY */ @@ -349,6 +399,14 @@ typedef struct klttydev_s { struct terminal_data *ttydev_cfg; /* driver fills up this */ } klttydev_t; +/* KLSTRUCT_SCSI2: SCSI Controller */ +typedef struct klscctl_s { + klinfo_t scsi_info; + uint type; + uint scsi_buscnt; + uint64_t scsi_bus[2]; +} klscctl_t; + /* ========== */ #define IP27_NMI(n) \ @@ -410,7 +468,7 @@ typedef struct gda { console_t *kl_get_console(void); void kl_init(int); -void kl_scan_config(int); +void kl_scan_config(int, int16_t); int kl_scan_node(int, uint, int (*)(lboard_t *, void *), void *); #define KLBRD_ANY 0 int kl_scan_board(lboard_t *, uint, int (*)(klinfo_t *, void *), void *); diff --git a/sys/arch/sgi/sgi/ip27_machdep.c b/sys/arch/sgi/sgi/ip27_machdep.c index ec540df45d3..dfd945e880d 100644 --- a/sys/arch/sgi/sgi/ip27_machdep.c +++ b/sys/arch/sgi/sgi/ip27_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ip27_machdep.c,v 1.44 2010/03/20 16:22:55 miod Exp $ */ +/* $OpenBSD: ip27_machdep.c,v 1.45 2010/03/21 13:52:05 miod Exp $ */ /* * Copyright (c) 2008, 2009 Miodrag Vallat. @@ -212,13 +212,13 @@ ip27_setup() * information, starting with the master node. */ - kl_scan_config(masternasid); + kl_scan_config(ip35, masternasid); for (node = 0; node < maxnodes; node++) { if (gda->nasid[node] < 0) continue; if (gda->nasid[node] == masternasid) continue; - kl_scan_config(gda->nasid[node]); + kl_scan_config(ip35, gda->nasid[node]); } /* diff --git a/sys/arch/sgi/sgi/sginode.c b/sys/arch/sgi/sgi/sginode.c index 5b363183e79..9ec5eb31170 100644 --- a/sys/arch/sgi/sgi/sginode.c +++ b/sys/arch/sgi/sgi/sginode.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sginode.c,v 1.17 2010/03/07 13:42:17 miod Exp $ */ +/* $OpenBSD: sginode.c,v 1.18 2010/03/21 13:52:05 miod Exp $ */ /* * Copyright (c) 2008, 2009 Miodrag Vallat. * @@ -99,9 +99,9 @@ kl_init(int ip35) } void -kl_scan_config(int nasid) +kl_scan_config(int ip35, int16_t nasid) { - kl_scan_node(nasid, KLBRD_ANY, kl_first_pass_board, NULL); + kl_scan_node(nasid, KLBRD_ANY, kl_first_pass_board, &ip35); } /* @@ -110,15 +110,69 @@ kl_scan_config(int nasid) int kl_first_pass_board(lboard_t *boardinfo, void *arg) { - DB_PRF(("%cboard type %x slot %x nasid %x nic %p components %d\n", + DB_PRF(("%cboard type %x slot %x nasid %x nic %p ncomp %d\n", boardinfo->struct_type & LBOARD ? 'l' : 'r', - boardinfo->brd_type, boardinfo->brd_slot, boardinfo->brd_nasid, - boardinfo->brd_nic, boardinfo->brd_numcompts)); + boardinfo->brd_type, boardinfo->brd_slot, + boardinfo->brd_nasid, boardinfo->brd_nic, + boardinfo->brd_numcompts)); - kl_scan_board(boardinfo, KLSTRUCT_ANY, kl_first_pass_comp, NULL); + kl_scan_board(boardinfo, KLSTRUCT_ANY, kl_first_pass_comp, arg); return 0; } +#ifdef DEBUG +static const char *klstruct_names[] = { + "unknown component", + "cpu", + "hub", + "memory", + "xbow", + "bridge", + "ioc3", + "pci", + "vme", + "router", + "graphics", + "scsi", + "fddi", + "mio", + "disk", + "tape", + "cdrom", + "hub uart", + "ioc3 Ethernet", + "ioc3 uart", + "component type 20", + "ioc3 keyboard", + "rad", + "hub tty", + "ioc3 tty", + "fc", + "module serialnumber", + "ioc3 mouse", + "tpu", + "gsn main board", + "gsn aux board", + "xthd", + "QLogic fc", + "firewire", + "usb", + "usb keyboard", + "usb mouse", + "dual scsi", + "PE brick", + "gigabit Ethernet", + "ide", + "ioc4", + "ioc4 uart", + "ioc4 tty", + "ioc4 keyboard", + "ioc4 mouse", + "ioc4 ATA", + "pci graphics" +}; +#endif + /* * Callback routine for the initial enumeration (components). * We are interested in cpu and memory information only, but display a few @@ -127,35 +181,53 @@ kl_first_pass_board(lboard_t *boardinfo, void *arg) int kl_first_pass_comp(klinfo_t *comp, void *arg) { + int ip35 = *(int *)arg; klcpu_t *cpucomp; klmembnk_m_t *memcomp_m; arc_config64_t *arc; #ifdef DEBUG - klhub_t *hubcomp; klmembnk_n_t *memcomp_n; + klhub_t *hubcomp; klxbow_t *xbowcomp; + klscsi_t *scsicomp; + klscctl_t *scsi2comp; int i; #endif arc = (arc_config64_t *)comp->arcs_compt; + +#ifdef DEBUG + if (comp->struct_type < nitems(klstruct_names)) + DB_PRF(("\t%s", klstruct_names[comp->struct_type])); + else + DB_PRF(("\tcomponent type %d", comp->struct_type)); + DB_PRF((", widget %x physid 0x%02x virtid %d", + comp->widid, comp->physid, comp->virtid)); + if (ip35) { + DB_PRF((" prt %d bus %d", comp->port, comp->pci_bus_num)); + if (comp->pci_multifunc) + DB_PRF((" pcifn %d", comp->pci_func_num)); + } + DB_PRF(("\n")); +#endif + switch (comp->struct_type) { case KLSTRUCT_CPU: cpucomp = (klcpu_t *)comp; - DB_PRF(("\tcpu type %x/%x %dMHz cache %dMB speed %dMHz\n", - cpucomp->cpu_prid, cpucomp->cpu_fpirr, cpucomp->cpu_speed, - cpucomp->cpu_scachesz, cpucomp->cpu_scachespeed)); - + DB_PRF(("\t type %x/%x %dMHz cache %dMB speed %dMHz\n", + cpucomp->cpu_prid, cpucomp->cpu_fpirr, + cpucomp->cpu_speed, cpucomp->cpu_scachesz, + cpucomp->cpu_scachespeed)); /* * XXX this assumes the first cpu encountered is the boot * XXX cpu. */ if (bootcpu_hwinfo.clock == 0) { bootcpu_hwinfo.c0prid = cpucomp->cpu_prid; -#if 0 - bootcpu_hwinfo.c1prid = cpucomp->cpu_fpirr; -#else - bootcpu_hwinfo.c1prid = cpucomp->cpu_prid; -#endif + if (ip35) + bootcpu_hwinfo.c1prid = cpucomp->cpu_prid; + else + bootcpu_hwinfo.c1prid = cpucomp->cpu_fpirr; bootcpu_hwinfo.clock = cpucomp->cpu_speed * 1000000; bootcpu_hwinfo.tlbsize = 64; bootcpu_hwinfo.type = (cpucomp->cpu_prid >> 8) & 0xff; @@ -167,7 +239,7 @@ kl_first_pass_comp(klinfo_t *comp, void *arg) memcomp_m = (klmembnk_m_t *)comp; #ifdef DEBUG memcomp_n = (klmembnk_n_t *)comp; - DB_PRF(("\tmemory %dMB, select %x flags %x\n", + DB_PRF(("\t %dMB, select %x flags %x\n", memcomp_m->membnk_memsz, memcomp_m->membnk_dimm_select, kl_n_mode ? memcomp_n->membnk_attr : memcomp_m->membnk_attr)); @@ -188,17 +260,17 @@ kl_first_pass_comp(klinfo_t *comp, void *arg) } } #endif - - if (sys_config.system_type == SGI_IP27) - kl_add_memory_ip27(comp->nasid, memcomp_m->membnk_bnksz, - kl_n_mode ? MD_MEM_BANKS_N : MD_MEM_BANKS_M); + if (ip35) + kl_add_memory_ip35(comp->nasid, + memcomp_m->membnk_bnksz, + kl_n_mode ? MD_MEM_BANKS_N : MD_MEM_BANKS_M); else - kl_add_memory_ip35(comp->nasid, memcomp_m->membnk_bnksz, - kl_n_mode ? MD_MEM_BANKS_N : MD_MEM_BANKS_M); + kl_add_memory_ip27(comp->nasid, + memcomp_m->membnk_bnksz, + kl_n_mode ? MD_MEM_BANKS_N : MD_MEM_BANKS_M); break; case KLSTRUCT_GFX: - DB_PRF(("\tgraphics widget %d\n", comp->widid)); /* * We rely upon the PROM setting up a fake ARCBios component * for the graphics console, if there is one. @@ -210,7 +282,7 @@ kl_first_pass_comp(klinfo_t *comp, void *arg) if (arc != NULL && arc->class != 0 && arc->type == arc_DisplayController && ISSET(arc->flags, ARCBIOS_DEVFLAGS_CONSOLE_OUTPUT)) { - DB_PRF(("\t(console device)\n")); + DB_PRF(("\t (console device)\n")); /* paranoia */ if (comp->widid >= WIDGET_MIN && comp->widid <= WIDGET_MAX) @@ -221,42 +293,53 @@ kl_first_pass_comp(klinfo_t *comp, void *arg) #ifdef DEBUG case KLSTRUCT_HUB: hubcomp = (klhub_t *)comp; - DB_PRF(("\thub widget %d port %d flag %d speed %dMHz\n", - hubcomp->hub_info.widid, hubcomp->hub_port.port_nasid, - hubcomp->hub_port.port_flag, hubcomp->hub_speed / 1000000)); + DB_PRF(("\t port %d flag %d speed %dMHz\n", + hubcomp->hub_port.port_nasid, hubcomp->hub_port.port_flag, + hubcomp->hub_speed / 1000000)); break; case KLSTRUCT_XBOW: xbowcomp = (klxbow_t *)comp; - DB_PRF(("\txbow hub master link %d\n", + DB_PRF(("\t hub master link %d\n", xbowcomp->xbow_hub_master_link)); for (i = 0; i < MAX_XBOW_LINKS; i++) { - if (xbowcomp->xbow_port_info[i].port_flag & - XBOW_PORT_ENABLE) - DB_PRF(("\t\twidget %d nasid %d flg %u\n", - 8 + i, - xbowcomp->xbow_port_info[i].port_nasid, - xbowcomp->xbow_port_info[i].port_flag)); + if (!ISSET(xbowcomp->xbow_port_info[i].port_flag, + XBOW_PORT_ENABLE)) + continue; + DB_PRF(("\t\twidget %d nasid %d flg %u\n", 8 + i, + xbowcomp->xbow_port_info[i].port_nasid, + xbowcomp->xbow_port_info[i].port_flag)); } break; - default: - DB_PRF(("\tcomponent widget %d type %d\n", - comp->widid, comp->struct_type)); + case KLSTRUCT_SCSI2: + scsi2comp = (klscctl_t *)comp; + for (i = 0; i < scsi2comp->scsi_buscnt; i++) { + scsicomp = (klscsi_t *)scsi2comp->scsi_bus[i]; + DB_PRF(("\t\tbus %d, physid 0x%02x virtid %d," + " specific %ld, numdevs %d\n", + i, scsicomp->scsi_info.physid, + scsicomp->scsi_info.virtid, + scsicomp->scsi_specific, + scsicomp->scsi_numdevs)); + } break; #endif } + #ifdef DEBUG if (arc != NULL) { - DB_PRF(("\tARCBios component: class %d type %d flags %02x key 0x%lx", + DB_PRF(("\t[ARCBios component:" + " class %d type %d flags %02x key 0x%lx", arc->class, arc->type, arc->flags, arc->key)); if (arc->id_len != 0) - DB_PRF((" %.*s\n", + DB_PRF((" %.*s]\n", (int)arc->id_len, (const char *)arc->id)); else - DB_PRF((" (no name)\n")); + DB_PRF((" (no name)]\n")); } #endif + return 0; } @@ -444,7 +527,7 @@ kl_add_memory_ip35(int16_t nasid, int16_t *sizes, unsigned int cnt) #if 0 physmem += lp - fp; #endif - continue; + goto skip; } if (memrange_register(fp, lp, @@ -460,6 +543,7 @@ kl_add_memory_ip35(int16_t nasid, int16_t *sizes, unsigned int cnt) ptoa(np) >> 20); } } +skip: basepa += 1UL << 30; /* 1 GB */ } } |