Ignore:
File:
1 edited

Legend:

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

    r3d6beaa r96b02eb9  
    4141#include <typedefs.h>
    4242#include <config.h>
    43 
    44 extern uint32_t interrupt_handler_size;
    45 
    46 extern void paging_on(void);
    47 
    48 extern void interrupt_handlers(void);
    49 
    50 extern void enable_l_apic_in_msr(void);
    51 
    52 
    53 extern void asm_delay_loop(uint32_t t);
    54 extern void asm_fake_loop(uint32_t t);
    55 
     43#include <trace.h>
    5644
    5745/** Halt CPU
     
    6048 *
    6149 */
    62 static inline __attribute__((noreturn)) void cpu_halt(void)
     50NO_TRACE static inline __attribute__((noreturn)) void cpu_halt(void)
    6351{
    6452        while (true) {
     
    6957}
    7058
    71 static 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) \
     59NO_TRACE static inline void cpu_sleep(void)
     60{
     61        asm volatile (
     62                "hlt\n"
     63        );
     64}
     65
     66#define GEN_READ_REG(reg) NO_TRACE static inline sysarg_t read_ ##reg (void) \
    7767        { \
    78                 unative_t res; \
     68                sysarg_t res; \
    7969                asm volatile ( \
    8070                        "movl %%" #reg ", %[res]" \
     
    8474        }
    8575
    86 #define GEN_WRITE_REG(reg) static inline void write_ ##reg (unative_t regn) \
     76#define GEN_WRITE_REG(reg) NO_TRACE static inline void write_ ##reg (sysarg_t regn) \
    8777        { \
    8878                asm volatile ( \
     
    119109 *
    120110 */
    121 static inline void pio_write_8(ioport8_t *port, uint8_t val)
     111NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val)
    122112{
    123113        asm volatile (
    124114                "outb %b[val], %w[port]\n"
    125                 :: [val] "a" (val), [port] "d" (port)
     115                :: [val] "a" (val),
     116                   [port] "d" (port)
    126117        );
    127118}
     
    135126 *
    136127 */
    137 static inline void pio_write_16(ioport16_t *port, uint16_t val)
     128NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val)
    138129{
    139130        asm volatile (
    140131                "outw %w[val], %w[port]\n"
    141                 :: [val] "a" (val), [port] "d" (port)
     132                :: [val] "a" (val),
     133                   [port] "d" (port)
    142134        );
    143135}
     
    151143 *
    152144 */
    153 static inline void pio_write_32(ioport32_t *port, uint32_t val)
     145NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val)
    154146{
    155147        asm volatile (
    156148                "outl %[val], %w[port]\n"
    157                 :: [val] "a" (val), [port] "d" (port)
     149                :: [val] "a" (val),
     150                   [port] "d" (port)
    158151        );
    159152}
     
    167160 *
    168161 */
    169 static inline uint8_t pio_read_8(ioport8_t *port)
     162NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port)
    170163{
    171164        uint8_t val;
     
    188181 *
    189182 */
    190 static inline uint16_t pio_read_16(ioport16_t *port)
     183NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port)
    191184{
    192185        uint16_t val;
     
    209202 *
    210203 */
    211 static inline uint32_t pio_read_32(ioport32_t *port)
     204NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port)
    212205{
    213206        uint32_t val;
     
    230223 *
    231224 */
    232 static inline ipl_t interrupts_enable(void)
     225NO_TRACE static inline ipl_t interrupts_enable(void)
    233226{
    234227        ipl_t v;
     
    252245 *
    253246 */
    254 static inline ipl_t interrupts_disable(void)
     247NO_TRACE static inline ipl_t interrupts_disable(void)
    255248{
    256249        ipl_t v;
     
    273266 *
    274267 */
    275 static inline void interrupts_restore(ipl_t ipl)
     268NO_TRACE static inline void interrupts_restore(ipl_t ipl)
    276269{
    277270        asm volatile (
     
    287280 *
    288281 */
    289 static inline ipl_t interrupts_read(void)
     282NO_TRACE static inline ipl_t interrupts_read(void)
    290283{
    291284        ipl_t v;
     
    305298 *
    306299 */
    307 static inline bool interrupts_disabled(void)
     300NO_TRACE static inline bool interrupts_disabled(void)
    308301{
    309302        ipl_t v;
     
    319312
    320313/** Write to MSR */
    321 static inline void write_msr(uint32_t msr, uint64_t value)
     314NO_TRACE static inline void write_msr(uint32_t msr, uint64_t value)
    322315{
    323316        asm volatile (
    324317                "wrmsr"
    325                 :: "c" (msr), "a" ((uint32_t) (value)),
     318                :: "c" (msr),
     319                   "a" ((uint32_t) (value)),
    326320                   "d" ((uint32_t) (value >> 32))
    327321        );
    328322}
    329323
    330 static inline uint64_t read_msr(uint32_t msr)
     324NO_TRACE static inline uint64_t read_msr(uint32_t msr)
    331325{
    332326        uint32_t ax, dx;
     
    334328        asm volatile (
    335329                "rdmsr"
    336                 : "=a" (ax), "=d" (dx)
     330                : "=a" (ax),
     331                  "=d" (dx)
    337332                : "c" (msr)
    338333        );
     
    349344 *
    350345 */
    351 static inline uintptr_t get_stack_base(void)
     346NO_TRACE static inline uintptr_t get_stack_base(void)
    352347{
    353348        uintptr_t v;
     
    367362 *
    368363 */
    369 static inline void invlpg(uintptr_t addr)
     364NO_TRACE static inline void invlpg(uintptr_t addr)
    370365{
    371366        asm volatile (
    372367                "invlpg %[addr]\n"
    373                 :: [addr] "m" (*(unative_t *) addr)
     368                :: [addr] "m" (*(sysarg_t *) addr)
    374369        );
    375370}
     
    380375 *
    381376 */
    382 static inline void gdtr_load(ptr_16_32_t *gdtr_reg)
     377NO_TRACE static inline void gdtr_load(ptr_16_32_t *gdtr_reg)
    383378{
    384379        asm volatile (
     
    393388 *
    394389 */
    395 static inline void gdtr_store(ptr_16_32_t *gdtr_reg)
     390NO_TRACE static inline void gdtr_store(ptr_16_32_t *gdtr_reg)
    396391{
    397392        asm volatile (
     
    406401 *
    407402 */
    408 static inline void idtr_load(ptr_16_32_t *idtr_reg)
     403NO_TRACE static inline void idtr_load(ptr_16_32_t *idtr_reg)
    409404{
    410405        asm volatile (
     
    419414 *
    420415 */
    421 static inline void tr_load(uint16_t sel)
     416NO_TRACE static inline void tr_load(uint16_t sel)
    422417{
    423418        asm volatile (
     
    427422}
    428423
     424extern void paging_on(void);
     425extern void enable_l_apic_in_msr(void);
     426
     427extern void asm_delay_loop(uint32_t);
     428extern void asm_fake_loop(uint32_t);
     429
     430extern uintptr_t int_syscall;
     431
     432extern uintptr_t int_0;
     433extern uintptr_t int_1;
     434extern uintptr_t int_2;
     435extern uintptr_t int_3;
     436extern uintptr_t int_4;
     437extern uintptr_t int_5;
     438extern uintptr_t int_6;
     439extern uintptr_t int_7;
     440extern uintptr_t int_8;
     441extern uintptr_t int_9;
     442extern uintptr_t int_10;
     443extern uintptr_t int_11;
     444extern uintptr_t int_12;
     445extern uintptr_t int_13;
     446extern uintptr_t int_14;
     447extern uintptr_t int_15;
     448extern uintptr_t int_16;
     449extern uintptr_t int_17;
     450extern uintptr_t int_18;
     451extern uintptr_t int_19;
     452extern uintptr_t int_20;
     453extern uintptr_t int_21;
     454extern uintptr_t int_22;
     455extern uintptr_t int_23;
     456extern uintptr_t int_24;
     457extern uintptr_t int_25;
     458extern uintptr_t int_26;
     459extern uintptr_t int_27;
     460extern uintptr_t int_28;
     461extern uintptr_t int_29;
     462extern uintptr_t int_30;
     463extern uintptr_t int_31;
     464extern uintptr_t int_32;
     465extern uintptr_t int_33;
     466extern uintptr_t int_34;
     467extern uintptr_t int_35;
     468extern uintptr_t int_36;
     469extern uintptr_t int_37;
     470extern uintptr_t int_38;
     471extern uintptr_t int_39;
     472extern uintptr_t int_40;
     473extern uintptr_t int_41;
     474extern uintptr_t int_42;
     475extern uintptr_t int_43;
     476extern uintptr_t int_44;
     477extern uintptr_t int_45;
     478extern uintptr_t int_46;
     479extern uintptr_t int_47;
     480extern uintptr_t int_48;
     481extern uintptr_t int_49;
     482extern uintptr_t int_50;
     483extern uintptr_t int_51;
     484extern uintptr_t int_52;
     485extern uintptr_t int_53;
     486extern uintptr_t int_54;
     487extern uintptr_t int_55;
     488extern uintptr_t int_56;
     489extern uintptr_t int_57;
     490extern uintptr_t int_58;
     491extern uintptr_t int_59;
     492extern uintptr_t int_60;
     493extern uintptr_t int_61;
     494extern uintptr_t int_62;
     495extern uintptr_t int_63;
     496
    429497#endif
    430498
Note: See TracChangeset for help on using the changeset viewer.