void soc_msr_write(unsigned index, msr_t msr) { uint32_t offset; union { uint32_t u32[2]; msr_t msr; } value; /* Write the low 32-bits of the register */ value.msr = msr; offset = mtrr_index_to_host_bridge_register_offset(index); port_reg_write(QUARK_NC_HOST_BRIDGE_SB_PORT_ID, offset, value.u32[0]); /* For 64-bit registers, write the upper 32-bits */ if ((offset >= QUARK_NC_HOST_BRIDGE_MTRR_FIX64K_00000) && (offset <= QUARK_NC_HOST_BRIDGE_MTRR_FIX4K_F8000)) { offset += 1; port_reg_write(QUARK_NC_HOST_BRIDGE_SB_PORT_ID, offset, value.u32[1]); } }
void disable_rom_shadow(void) { uint32_t data; /* Determine if the shadow ROM is enabled */ data = port_reg_read(QUARK_NC_HOST_BRIDGE_SB_PORT_ID, QNC_MSG_FSBIC_REG_HMISC); if ((data & (ESEG_RD_DRAM | FSEG_RD_DRAM)) != (ESEG_RD_DRAM | FSEG_RD_DRAM)) { /* Disable the ROM shadow 0x000e0000 - 0x000fffff */ data |= ESEG_RD_DRAM | FSEG_RD_DRAM; port_reg_write(QUARK_NC_HOST_BRIDGE_SB_PORT_ID, QNC_MSG_FSBIC_REG_HMISC, data); } }