ihandle_t prom_memory_ihandle(void) { static ihandle_t imemory; if (imemory != (ihandle_t)0) return (imemory); if (prom_getproplen(prom_chosennode(), "memory") != sizeof (ihandle_t)) return (imemory = (ihandle_t)-1); (void) prom_getprop(prom_chosennode(), "memory", (caddr_t)(&imemory)); imemory = (ihandle_t)prom_decode_int(imemory); return (imemory); }
void map_wellknown_devices() { struct wkdevice *wkp; phandle_t ieeprom; pnode_t root; uint_t stick_freq; /* * if there is a chosen eeprom, note it (for have_eeprom()) */ if (GETPROPLEN(prom_chosennode(), CHOSEN_EEPROM) == sizeof (phandle_t) && GETPROP(prom_chosennode(), CHOSEN_EEPROM, (caddr_t)&ieeprom) != -1) chosen_eeprom = (pnode_t)prom_decode_int(ieeprom); root = prom_nextnode((pnode_t)0); /* * Get System clock frequency from root node if it exists. */ if (GETPROP(root, "stick-frequency", (caddr_t)&stick_freq) != -1) system_clock_freq = stick_freq; map_wellknown(NEXT((pnode_t)0)); /* * See if it worked */ for (wkp = wkdevice; wkp->wk_namep; ++wkp) { if (wkp->wk_flags == V_MUSTHAVE) { cmn_err(CE_PANIC, "map_wellknown_devices: required " "device %s not mapped", wkp->wk_namep); } } /* * all sun4u systems must have an IO bus, i.e. sbus or pcibus */ if (niobus == 0) cmn_err(CE_PANIC, "map_wellknown_devices: no i/o bus node"); check_cpus_ver(); check_cpus_set(); }