Ignore:
File:
1 edited

Legend:

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

    rb808660 r3d6beaa  
    4141#include <typedefs.h>
    4242#include <config.h>
    43 #include <trace.h>
    4443
    4544extern uint32_t interrupt_handler_size;
    4645
     46extern void paging_on(void);
     47
     48extern void interrupt_handlers(void);
     49
     50extern void enable_l_apic_in_msr(void);
     51
     52
     53extern void asm_delay_loop(uint32_t t);
     54extern void asm_fake_loop(uint32_t t);
     55
     56
    4757/** Halt CPU
    4858 *
     
    5060 *
    5161 */
    52 NO_TRACE static inline __attribute__((noreturn)) void cpu_halt(void)
     62static inline __attribute__((noreturn)) void cpu_halt(void)
    5363{
    5464        while (true) {
     
    5969}
    6070
    61 NO_TRACE static inline void cpu_sleep(void)
    62 {
    63         asm volatile (
    64                 "hlt\n"
    65         );
    66 }
    67 
    68 #define GEN_READ_REG(reg) NO_TRACE static inline unative_t read_ ##reg (void) \
     71static inline void cpu_sleep(void)
     72{
     73        asm volatile ("hlt\n");
     74}
     75
     76#define GEN_READ_REG(reg) static inline unative_t read_ ##reg (void) \
    6977        { \
    7078                unative_t res; \
     
    7684        }
    7785
    78 #define GEN_WRITE_REG(reg) NO_TRACE static inline void write_ ##reg (unative_t regn) \
     86#define GEN_WRITE_REG(reg) static inline void write_ ##reg (unative_t regn) \
    7987        { \
    8088                asm volatile ( \
     
    111119 *
    112120 */
    113 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val)
     121static inline void pio_write_8(ioport8_t *port, uint8_t val)
    114122{
    115123        asm volatile (
    116124                "outb %b[val], %w[port]\n"
    117                 :: [val] "a" (val),
    118                    [port] "d" (port)
     125                :: [val] "a" (val), [port] "d" (port)
    119126        );
    120127}
     
    128135 *
    129136 */
    130 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val)
     137static inline void pio_write_16(ioport16_t *port, uint16_t val)
    131138{
    132139        asm volatile (
    133140                "outw %w[val], %w[port]\n"
    134                 :: [val] "a" (val),
    135                    [port] "d" (port)
     141                :: [val] "a" (val), [port] "d" (port)
    136142        );
    137143}
     
    145151 *
    146152 */
    147 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val)
     153static inline void pio_write_32(ioport32_t *port, uint32_t val)
    148154{
    149155        asm volatile (
    150156                "outl %[val], %w[port]\n"
    151                 :: [val] "a" (val),
    152                    [port] "d" (port)
     157                :: [val] "a" (val), [port] "d" (port)
    153158        );
    154159}
     
    162167 *
    163168 */
    164 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port)
     169static inline uint8_t pio_read_8(ioport8_t *port)
    165170{
    166171        uint8_t val;
     
    183188 *
    184189 */
    185 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port)
     190static inline uint16_t pio_read_16(ioport16_t *port)
    186191{
    187192        uint16_t val;
     
    204209 *
    205210 */
    206 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port)
     211static inline uint32_t pio_read_32(ioport32_t *port)
    207212{
    208213        uint32_t val;
     
    225230 *
    226231 */
    227 NO_TRACE static inline ipl_t interrupts_enable(void)
     232static inline ipl_t interrupts_enable(void)
    228233{
    229234        ipl_t v;
     
    247252 *
    248253 */
    249 NO_TRACE static inline ipl_t interrupts_disable(void)
     254static inline ipl_t interrupts_disable(void)
    250255{
    251256        ipl_t v;
     
    268273 *
    269274 */
    270 NO_TRACE static inline void interrupts_restore(ipl_t ipl)
     275static inline void interrupts_restore(ipl_t ipl)
    271276{
    272277        asm volatile (
     
    282287 *
    283288 */
    284 NO_TRACE static inline ipl_t interrupts_read(void)
     289static inline ipl_t interrupts_read(void)
    285290{
    286291        ipl_t v;
     
    300305 *
    301306 */
    302 NO_TRACE static inline bool interrupts_disabled(void)
     307static inline bool interrupts_disabled(void)
    303308{
    304309        ipl_t v;
     
    314319
    315320/** Write to MSR */
    316 NO_TRACE static inline void write_msr(uint32_t msr, uint64_t value)
     321static inline void write_msr(uint32_t msr, uint64_t value)
    317322{
    318323        asm volatile (
    319324                "wrmsr"
    320                 :: "c" (msr),
    321                    "a" ((uint32_t) (value)),
     325                :: "c" (msr), "a" ((uint32_t) (value)),
    322326                   "d" ((uint32_t) (value >> 32))
    323327        );
    324328}
    325329
    326 NO_TRACE static inline uint64_t read_msr(uint32_t msr)
     330static inline uint64_t read_msr(uint32_t msr)
    327331{
    328332        uint32_t ax, dx;
     
    330334        asm volatile (
    331335                "rdmsr"
    332                 : "=a" (ax),
    333                   "=d" (dx)
     336                : "=a" (ax), "=d" (dx)
    334337                : "c" (msr)
    335338        );
     
    346349 *
    347350 */
    348 NO_TRACE static inline uintptr_t get_stack_base(void)
     351static inline uintptr_t get_stack_base(void)
    349352{
    350353        uintptr_t v;
     
    364367 *
    365368 */
    366 NO_TRACE static inline void invlpg(uintptr_t addr)
     369static inline void invlpg(uintptr_t addr)
    367370{
    368371        asm volatile (
     
    377380 *
    378381 */
    379 NO_TRACE static inline void gdtr_load(ptr_16_32_t *gdtr_reg)
     382static inline void gdtr_load(ptr_16_32_t *gdtr_reg)
    380383{
    381384        asm volatile (
     
    390393 *
    391394 */
    392 NO_TRACE static inline void gdtr_store(ptr_16_32_t *gdtr_reg)
     395static inline void gdtr_store(ptr_16_32_t *gdtr_reg)
    393396{
    394397        asm volatile (
     
    403406 *
    404407 */
    405 NO_TRACE static inline void idtr_load(ptr_16_32_t *idtr_reg)
     408static inline void idtr_load(ptr_16_32_t *idtr_reg)
    406409{
    407410        asm volatile (
     
    416419 *
    417420 */
    418 NO_TRACE static inline void tr_load(uint16_t sel)
     421static inline void tr_load(uint16_t sel)
    419422{
    420423        asm volatile (
     
    424427}
    425428
    426 extern void paging_on(void);
    427 extern void enable_l_apic_in_msr(void);
    428 
    429 extern void asm_delay_loop(uint32_t);
    430 extern void asm_fake_loop(uint32_t);
    431 
    432 extern uintptr_t int_0;
    433 extern uintptr_t int_1;
    434 extern uintptr_t int_2;
    435 extern uintptr_t int_3;
    436 extern uintptr_t int_4;
    437 extern uintptr_t int_5;
    438 extern uintptr_t int_6;
    439 extern uintptr_t int_7;
    440 extern uintptr_t int_8;
    441 extern uintptr_t int_9;
    442 extern uintptr_t int_10;
    443 extern uintptr_t int_11;
    444 extern uintptr_t int_12;
    445 extern uintptr_t int_13;
    446 extern uintptr_t int_14;
    447 extern uintptr_t int_15;
    448 extern uintptr_t int_16;
    449 extern uintptr_t int_17;
    450 extern uintptr_t int_18;
    451 extern uintptr_t int_19;
    452 extern uintptr_t int_20;
    453 extern uintptr_t int_21;
    454 extern uintptr_t int_22;
    455 extern uintptr_t int_23;
    456 extern uintptr_t int_24;
    457 extern uintptr_t int_25;
    458 extern uintptr_t int_26;
    459 extern uintptr_t int_27;
    460 extern uintptr_t int_28;
    461 extern uintptr_t int_29;
    462 extern uintptr_t int_30;
    463 extern uintptr_t int_31;
    464 extern uintptr_t int_32;
    465 extern uintptr_t int_33;
    466 extern uintptr_t int_34;
    467 extern uintptr_t int_35;
    468 extern uintptr_t int_36;
    469 extern uintptr_t int_37;
    470 extern uintptr_t int_38;
    471 extern uintptr_t int_39;
    472 extern uintptr_t int_40;
    473 extern uintptr_t int_41;
    474 extern uintptr_t int_42;
    475 extern uintptr_t int_43;
    476 extern uintptr_t int_44;
    477 extern uintptr_t int_45;
    478 extern uintptr_t int_46;
    479 extern uintptr_t int_47;
    480 extern uintptr_t int_48;
    481 extern uintptr_t int_49;
    482 extern uintptr_t int_50;
    483 extern uintptr_t int_51;
    484 extern uintptr_t int_52;
    485 extern uintptr_t int_53;
    486 extern uintptr_t int_54;
    487 extern uintptr_t int_55;
    488 extern uintptr_t int_56;
    489 extern uintptr_t int_57;
    490 extern uintptr_t int_58;
    491 extern uintptr_t int_59;
    492 extern uintptr_t int_60;
    493 extern uintptr_t int_61;
    494 extern uintptr_t int_62;
    495 extern uintptr_t int_63;
    496 
    497429#endif
    498430
Note: See TracChangeset for help on using the changeset viewer.