vmap_pmem_nocache()
[akaros.git] / kern / arch / x86 / arch.h
index 07045f6..498c82c 100644 (file)
@@ -4,11 +4,11 @@
 #include <ros/arch/arch.h>
 #include <ros/common.h>
 #include <arch/x86.h>
-#include <arch/apic.h>
 
 /* Arch Constants */
 #define ARCH_CL_SIZE                            64
 
+#define __always_inline __attribute__((always_inline))
 static inline void breakpoint(void) __attribute__((always_inline));
 static inline void invlpg(void *addr) __attribute__((always_inline));  
 static inline void tlbflush(void) __attribute__((always_inline));
@@ -26,11 +26,6 @@ static inline void cpu_relax(void) __attribute__((always_inline));
 static inline void cpu_halt(void) __attribute__((always_inline));
 static inline void clflush(uintptr_t* addr) __attribute__((always_inline));
 static inline int irq_is_enabled(void) __attribute__((always_inline));
-static inline int get_hw_coreid(uint32_t coreid) __attribute__((always_inline));
-static inline int hw_core_id(void) __attribute__((always_inline));
-static inline int get_os_coreid(int hw_coreid) __attribute__((always_inline));
-static inline int core_id(void) __attribute__((always_inline));
-static inline int core_id_early(void) __attribute__((always_inline));
 static inline void cache_flush(void) __attribute__((always_inline));
 static inline void reboot(void)
               __attribute__((always_inline)) __attribute__((noreturn));
@@ -40,10 +35,7 @@ void send_ipi(uint32_t os_coreid, uint8_t vector);
 /* in cpuinfo.c */
 void print_cpuinfo(void);
 void show_mapping(uintptr_t start, size_t size);
-
-/* declared in smp.c */
-extern int hw_coreid_lookup[MAX_NUM_CPUS];
-extern int os_coreid_lookup[MAX_NUM_CPUS];
+int vendor_id(char *);
 
 static inline void breakpoint(void)
 {
@@ -148,38 +140,6 @@ static inline int irq_is_enabled(void)
        return read_flags() & FL_IF;
 }
 
-/* os_coreid -> hw_coreid */
-static inline int get_hw_coreid(uint32_t coreid)
-{
-       return hw_coreid_lookup[coreid];
-}
-
-static inline int hw_core_id(void)
-{
-       return lapic_get_id();
-}
-
-/* hw_coreid -> os_coreid */
-static inline int get_os_coreid(int hw_coreid)
-{
-       return os_coreid_lookup[hw_coreid];
-}
-
-/* core_id() returns the OS core number, not to be confused with the
- * hardware-specific core identifier (such as the lapic id) returned by
- * hw_core_id() */
-static inline int core_id(void)
-{
-       return get_os_coreid(hw_core_id());
-}
-
-static inline int core_id_early(void)
-{
-       if (!core_id_ready)
-               return 0;
-       return core_id();
-}
-
 static inline void cache_flush(void)
 {
        wbinvd();
@@ -187,7 +147,10 @@ static inline void cache_flush(void)
 
 static inline void reboot(void)
 {
+       uint8_t cf9 = inb(0xcf9) & ~6;
        outb(0x92, 0x3);
+       outb(0xcf9, cf9 | 2);
+       outb(0xcf9, cf9 | 6);
        asm volatile ("mov $0, %"X86_REG_SP"; int $0");
        while (1);
 }