/* * This file is part of the coreboot project. * * Copyright (C) 2010 Advanced Micro Devices, Inc. * Copyright (C) 2015 Timothy Pearson , Raptor Engineering * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include "mct_d_gcc.h" #include #include void _WRMSR(u32 addr, u32 lo, u32 hi) { __asm__ volatile ( "wrmsr" : :"c"(addr),"a"(lo), "d" (hi) ); } void _RDMSR(u32 addr, u32 *lo, u32 *hi) { __asm__ volatile ( "rdmsr" :"=a"(*lo), "=d" (*hi) :"c"(addr) ); } void _RDTSC(u32 *lo, u32 *hi) { __asm__ volatile ( "rdtsc" : "=a" (*lo), "=d"(*hi) ); } void _cpu_id(u32 addr, u32 *val) { __asm__ volatile( "cpuid" : "=a" (val[0]), "=b" (val[1]), "=c" (val[2]), "=d" (val[3]) : "0" (addr)); } u32 bsr(u32 x) { u8 i; u32 ret = 0; for (i = 31; i > 0; i--) { if (x & (1<= 0; i--) { val <<= 8; valx = *(p+i); val |= valx; } return val; } u8 oemNodePresent_D(u8 Node, u8 *ret) { *ret = 0; return 0; }