Changeset 4ffa9e0 in mainline for arch/ia32


Ignore:
Timestamp:
2005-02-23T11:48:52Z (21 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3418c41
Parents:
b109ebb
Message:

New IPI for waking up idle CPU's halted in scheduler.
Added architecture-independent ipi_broadcast().

Location:
arch/ia32
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/Makefile.inc

    rb109ebb r4ffa9e0  
    2727        arch/smp/mp.c \
    2828        arch/smp/atomic.S \
     29        arch/smp/ipi.c \
    2930        arch/ia32.c \
    3031        arch/interrupt.c \
  • arch/ia32/include/interrupt.h

    rb109ebb r4ffa9e0  
    5959#define VECTOR_KBD              (IVT_IRQBASE+IRQ_KBD)
    6060
    61 #define VECTOR_SYSCALL          (IVT_FREEBASE+0)
    62 #define VECTOR_TLB_SHOOTDOWN    (IVT_FREEBASE+1)
     61#define VECTOR_SYSCALL                  (IVT_FREEBASE+0)
     62#define VECTOR_TLB_SHOOTDOWN_IPI        (IVT_FREEBASE+1)
     63#define VECTOR_WAKEUP_IPI               (IVT_FREEBASE+2)
    6364
    6465typedef void (* iroutine)(__u8 n, __u32 stack[]);
     
    7980extern void syscall(__u8 n, __u32 stack[]);
    8081extern void tlb_shootdown_ipi(__u8 n, __u32 stack[]);
     82extern void wakeup_ipi(__u8 n, __u32 stack[]);
    8183
    8284extern void trap_virtual_enable_irqs(__u16 irqmask);
  • arch/ia32/src/ia32.c

    rb109ebb r4ffa9e0  
    5959               
    6060                #ifdef __SMP__
    61                 trap_register(VECTOR_TLB_SHOOTDOWN, tlb_shootdown_ipi);
     61                trap_register(VECTOR_TLB_SHOOTDOWN_IPI, tlb_shootdown_ipi);
     62                trap_register(VECTOR_WAKEUP_IPI, wakeup_ipi);
    6263                #endif /* __SMP__ */
    6364        }
  • arch/ia32/src/interrupt.c

    rb109ebb r4ffa9e0  
    101101}
    102102
     103void wakeup_ipi(__u8 n, __u32 stack[])
     104{
     105        trap_virtual_eoi();
     106}
     107
    103108void trap_virtual_enable_irqs(__u16 irqmask)
    104109{
  • arch/ia32/src/mm/tlb.c

    rb109ebb r4ffa9e0  
    3030#include <arch/asm.h>
    3131
    32 #ifdef __SMP__
    33 #include <arch/apic.h>
    34 #include <arch/interrupt.h>
    35 #endif /* __SMP__ */
    36 
    3732void tlb_invalidate(int asid)
    3833{
    3934        cpu_write_dba(cpu_read_dba());
    4035}
    41 
    42 #ifdef __SMP__
    43 void tlb_shootdown_ipi_send(void)
    44 {
    45         (void) l_apic_broadcast_custom_ipi(VECTOR_TLB_SHOOTDOWN);
    46 }
    47 #endif /* __SMP__ */
Note: See TracChangeset for help on using the changeset viewer.