Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/include/asm.h

    r7a0359b r3d6beaa  
    3939#include <typedefs.h>
    4040#include <arch/cpu.h>
    41 #include <trace.h>
     41
     42extern void asm_delay_loop(uint32_t t);
     43extern void asm_fake_loop(uint32_t t);
    4244
    4345/** Return base address of current stack.
     
    4850 *
    4951 */
    50 NO_TRACE static inline uintptr_t get_stack_base(void)
     52static inline uintptr_t get_stack_base(void)
    5153{
    5254        uintptr_t v;
     
    5557                "andq %%rsp, %[v]\n"
    5658                : [v] "=r" (v)
    57                 : "0" (~((uint64_t) STACK_SIZE - 1))
     59                : "0" (~((uint64_t) STACK_SIZE-1))
    5860        );
    5961       
     
    6163}
    6264
    63 NO_TRACE static inline void cpu_sleep(void)
    64 {
    65         asm volatile (
    66                 "hlt\n"
    67         );
    68 }
    69 
    70 NO_TRACE static inline void __attribute__((noreturn)) cpu_halt(void)
     65static inline void cpu_sleep(void)
     66{
     67        asm volatile ("hlt\n");
     68}
     69
     70static inline void __attribute__((noreturn)) cpu_halt(void)
    7171{
    7272        while (true) {
     
    7777}
    7878
     79
    7980/** Byte from port
    8081 *
     
    8586 *
    8687 */
    87 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port)
     88static inline uint8_t pio_read_8(ioport8_t *port)
    8889{
    8990        uint8_t val;
     
    106107 *
    107108 */
    108 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port)
     109static inline uint16_t pio_read_16(ioport16_t *port)
    109110{
    110111        uint16_t val;
     
    127128 *
    128129 */
    129 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port)
     130static inline uint32_t pio_read_32(ioport32_t *port)
    130131{
    131132        uint32_t val;
     
    148149 *
    149150 */
    150 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val)
     151static inline void pio_write_8(ioport8_t *port, uint8_t val)
    151152{
    152153        asm volatile (
    153154                "outb %b[val], %w[port]\n"
    154                 :: [val] "a" (val),
    155                    [port] "d" (port)
     155                :: [val] "a" (val), [port] "d" (port)
    156156        );
    157157}
     
    165165 *
    166166 */
    167 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val)
     167static inline void pio_write_16(ioport16_t *port, uint16_t val)
    168168{
    169169        asm volatile (
    170170                "outw %w[val], %w[port]\n"
    171                 :: [val] "a" (val),
    172                    [port] "d" (port)
     171                :: [val] "a" (val), [port] "d" (port)
    173172        );
    174173}
     
    182181 *
    183182 */
    184 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val)
     183static inline void pio_write_32(ioport32_t *port, uint32_t val)
    185184{
    186185        asm volatile (
    187186                "outl %[val], %w[port]\n"
    188                 :: [val] "a" (val),
    189                    [port] "d" (port)
     187                :: [val] "a" (val), [port] "d" (port)
    190188        );
    191189}
    192190
    193191/** Swap Hidden part of GS register with visible one */
    194 NO_TRACE static inline void swapgs(void)
    195 {
    196         asm volatile (
    197                 "swapgs"
    198         );
     192static inline void swapgs(void)
     193{
     194        asm volatile("swapgs");
    199195}
    200196
     
    207203 *
    208204 */
    209 NO_TRACE static inline ipl_t interrupts_enable(void) {
     205static inline ipl_t interrupts_enable(void) {
    210206        ipl_t v;
    211207       
     
    228224 *
    229225 */
    230 NO_TRACE static inline ipl_t interrupts_disable(void) {
     226static inline ipl_t interrupts_disable(void) {
    231227        ipl_t v;
    232228       
     
    248244 *
    249245 */
    250 NO_TRACE static inline void interrupts_restore(ipl_t ipl) {
     246static inline void interrupts_restore(ipl_t ipl) {
    251247        asm volatile (
    252248                "pushq %[ipl]\n"
     
    263259 *
    264260 */
    265 NO_TRACE static inline ipl_t interrupts_read(void) {
     261static inline ipl_t interrupts_read(void) {
    266262        ipl_t v;
    267263       
     
    280276 *
    281277 */
    282 NO_TRACE static inline bool interrupts_disabled(void)
     278static inline bool interrupts_disabled(void)
    283279{
    284280        ipl_t v;
     
    293289}
    294290
     291
    295292/** Write to MSR */
    296 NO_TRACE static inline void write_msr(uint32_t msr, uint64_t value)
     293static inline void write_msr(uint32_t msr, uint64_t value)
    297294{
    298295        asm volatile (
     
    304301}
    305302
    306 NO_TRACE static inline unative_t read_msr(uint32_t msr)
     303static inline unative_t read_msr(uint32_t msr)
    307304{
    308305        uint32_t ax, dx;
     
    317314}
    318315
     316
    319317/** Enable local APIC
    320318 *
     
    322320 *
    323321 */
    324 NO_TRACE static inline void enable_l_apic_in_msr()
     322static inline void enable_l_apic_in_msr()
    325323{
    326324        asm volatile (
     
    330328                "orl $(0xfee00000),%%eax\n"
    331329                "wrmsr\n"
    332                 ::: "%eax", "%ecx", "%edx"
     330                ::: "%eax","%ecx","%edx"
    333331        );
    334332}
     
    339337 *
    340338 */
    341 NO_TRACE static inline void invlpg(uintptr_t addr)
     339static inline void invlpg(uintptr_t addr)
    342340{
    343341        asm volatile (
     
    352350 *
    353351 */
    354 NO_TRACE static inline void gdtr_load(ptr_16_64_t *gdtr_reg)
     352static inline void gdtr_load(ptr_16_64_t *gdtr_reg)
    355353{
    356354        asm volatile (
     
    365363 *
    366364 */
    367 NO_TRACE static inline void gdtr_store(ptr_16_64_t *gdtr_reg)
     365static inline void gdtr_store(ptr_16_64_t *gdtr_reg)
    368366{
    369367        asm volatile (
     
    378376 *
    379377 */
    380 NO_TRACE static inline void idtr_load(ptr_16_64_t *idtr_reg)
     378static inline void idtr_load(ptr_16_64_t *idtr_reg)
    381379{
    382380        asm volatile (
     
    390388 *
    391389 */
    392 NO_TRACE static inline void tr_load(uint16_t sel)
     390static inline void tr_load(uint16_t sel)
    393391{
    394392        asm volatile (
     
    398396}
    399397
    400 #define GEN_READ_REG(reg) NO_TRACE static inline unative_t read_ ##reg (void) \
     398#define GEN_READ_REG(reg) static inline unative_t read_ ##reg (void) \
    401399        { \
    402400                unative_t res; \
     
    408406        }
    409407
    410 #define GEN_WRITE_REG(reg) NO_TRACE static inline void write_ ##reg (unative_t regn) \
     408#define GEN_WRITE_REG(reg) static inline void write_ ##reg (unative_t regn) \
    411409        { \
    412410                asm volatile ( \
     
    438436extern void interrupt_handlers(void);
    439437
    440 extern void asm_delay_loop(uint32_t);
    441 extern void asm_fake_loop(uint32_t);
    442 
    443438#endif
    444439
Note: See TracChangeset for help on using the changeset viewer.