]> Zhao Yanbai Git Server - minix.git/commitdiff
Add MKAPIC and MKACPI options
authorArun Thomas <arun@minix3.org>
Sun, 31 Jul 2011 14:20:34 +0000 (16:20 +0200)
committerArun Thomas <arun@minix3.org>
Sun, 31 Jul 2011 14:22:43 +0000 (16:22 +0200)
16 files changed:
common/include/arch/i386/interrupt.h
drivers/ramdisk/Makefile
kernel/Makefile
kernel/arch/i386/Makefile.inc
kernel/arch/i386/apic.c
kernel/arch/i386/apic_asm.S
kernel/arch/i386/apic_asm.h
kernel/arch/i386/arch_clock.c
kernel/arch/i386/arch_system.c
kernel/arch/i386/include/hw_intr.h
kernel/arch/i386/memory.c
kernel/config.h
kernel/glo.h
kernel/kernel.h
kernel/start.c
share/mk/bsd.own.mk

index 01311979c2cd8c1841cdc3e5fb2e84a0b4c33156..86b9447ff64ee346167a4662c9086d347c07e236 100644 (file)
@@ -35,7 +35,7 @@
 #define IRQ8_VECTOR     0x70   /* no need to move IRQ8-15 */
 
 /* Hardware interrupt numbers. */
-#ifndef CONFIG_APIC
+#ifndef USE_APIC
 #define NR_IRQ_VECTORS    16
 #else
 #define NR_IRQ_VECTORS    64
index 6edb431ce074ccffea20e2d557233037a0e1c853..2f7d9ce4e2afb7cec906708db0f85a58d9c37e0c 100644 (file)
@@ -10,8 +10,8 @@ SCRIPTS=newroot
 PROGRAMS+= ahci ext2
 .endif
 
-# acpi is not compiled with ack or if MKEMBED
-.if ${COMPILER_TYPE} == "gnu" && ${MKEMBED} != "yes"
+# acpi is not compiled with ack
+.if ${COMPILER_TYPE} == "gnu" && ${MKACPI} != "no"
 PROGRAMS+= acpi
 .endif
 
index b098f1772a4c850883adbc1a22093c6719301a15..6cae964ce5ae7b057bb23513f3afe2586bea3018 100644 (file)
@@ -49,6 +49,16 @@ SRCS+= watchdog.c arch_watchdog.c
 CPPFLAGS+= -DUSE_WATCHDOG
 .endif
 
+.if ${USE_ACPI} != "no"
+SRCS+= acpi.c
+CPPFLAGS+= -DUSE_ACPI
+.endif
+
+.if ${USE_APIC} != "no"
+SRCS+= apic.c apic_asm.S
+CPPFLAGS+= -DUSE_APIC
+.endif
+
 # These come last, so the profiling buffer is at the end of the data segment
 SRCS+= profile.c do_sprofile.c
 
index f64341bbe57b355fce673f5388b84c9f6d240368..4d9f7db13f75489d1c911b6fe012a5557f4675b6 100644 (file)
@@ -27,10 +27,7 @@ SRCS+=       arch_do_vmctl.c \
        oxpcie.c \
        protect.c \
        arch_system.c \
-       apic.c \
-       apic_asm.S \
-       pre_init.c \
-       acpi.c
+       pre_init.c
 
 .ifdef CONFIG_SMP
 SRCS += arch_smp.c trampoline.S
index a7f9218184e8fa83b65a6503e4aeea6301381eee..b73b98f1ac8799518b82d4bb3269b7f6d25d77af 100644 (file)
@@ -820,7 +820,7 @@ PRIVATE struct gate_table_s gate_table_smp[] = {
 };
 #endif
 
-#ifdef CONFIG_APIC_DEBUG
+#ifdef APIC_DEBUG
 PRIVATE void lapic_set_dummy_handlers(void)
 {
        char * handler;
@@ -852,7 +852,7 @@ PUBLIC void apic_idt_init(const int reset)
                return;
        }
 
-#ifdef CONFIG_APIC_DEBUG
+#ifdef APIC_DEBUG
        if (is_bsp)
                printf("APIC debugging is enabled\n");
        lapic_set_dummy_handlers();
index ec51950ed9264589ee14ba52fc786034fa168229..33a379d15324d973a7880ceea40bf738a70e23c2 100644 (file)
@@ -83,7 +83,7 @@ ENTRY(apic_ipi_halt_intr)
 
 #endif /* CONFIG_SMP */
 
-#ifdef CONFIG_APIC_DEBUG
+#ifdef APIC_DEBUG
 
 .data
 lapic_intr_dummy_handler_msg:
@@ -426,4 +426,4 @@ LABEL(lapic_intr_dummy_handles_start)
 LABEL(lapic_intr_dummy_handles_end)
 
 
-#endif /* CONFIG_APIC_DEBUG */
+#endif /* APIC_DEBUG */
index ff06334da989ce26b9959a23bfe0561a32f922f0..d3da2037b7241aaedcb44f56f875093f573c7073 100644 (file)
@@ -77,9 +77,9 @@ _PROTOTYPE(void apic_error_intr, (void));
 
 #endif
 
-#define CONFIG_APIC_DEBUG
+#define APIC_DEBUG
 
-#ifdef CONFIG_APIC_DEBUG
+#ifdef APIC_DEBUG
 
 #define LAPIC_INTR_DUMMY_HANDLER_SIZE  32
 
@@ -88,6 +88,6 @@ EXTERN char lapic_intr_dummy_handles_start;
 EXTERN char lapic_intr_dummy_handles_end;
 #endif
 
-#endif /* CONFIG_APIC_DEBUG */
+#endif /* APIC_DEBUG */
 
 #endif /* __APIC_ASM_H__ */
index 31c4d835855565411ce34e245ef5362e25884a19..d07e17366b21b0940aefbbf4db42154a053cfa32 100644 (file)
@@ -14,7 +14,7 @@
 #include "profile.h"
 
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
 #include "apic.h"
 #endif
 #include "spinlock.h"
@@ -121,7 +121,7 @@ PRIVATE void estimate_cpu_freq(void)
 
 PUBLIC int init_local_timer(unsigned freq)
 {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        /* if we know the address, lapic is enabled and we should use it */
        if (lapic_addr) {
                unsigned cpu = cpuid;
@@ -144,7 +144,7 @@ PUBLIC int init_local_timer(unsigned freq)
 
 PUBLIC void stop_local_timer(void)
 {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        if (lapic_addr) {
                lapic_stop_timer();
                apic_eoi();
@@ -157,7 +157,7 @@ PUBLIC void stop_local_timer(void)
 
 PUBLIC void restart_local_timer(void)
 {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        if (lapic_addr) {
                lapic_restart_timer();
        }
@@ -166,7 +166,7 @@ PUBLIC void restart_local_timer(void)
 
 PUBLIC int register_local_timer_handler(const irq_handler_t handler)
 {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        if (lapic_addr) {
                /* Using APIC, it is configured in apic_idt_init() */
                BOOT_VERBOSE(printf("Using LAPIC timer as tick source\n"));
index 2c32b82c65cc3adaa82ec12b7360ca6436edae04..bb48c2afdf36f500ab6e1f8a257a329bb6fd38bb 100644 (file)
 
 #include "glo.h"
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
 #include "apic.h"
 #endif
 
+#ifdef USE_ACPI
 #include "acpi.h"
+#endif
 
 PRIVATE int osfxsr_feature; /* FXSAVE/FXRSTOR instructions support (SSEx) */
 
@@ -348,7 +350,7 @@ PUBLIC void cpu_identify(void)
 
 PUBLIC void arch_init(void)
 {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        /*
         * this is setting kernel segments to cover most of the phys memory. The
         * value is high enough to reach local APIC nad IOAPICs before paging is
@@ -379,9 +381,11 @@ PUBLIC void arch_init(void)
        ser_init();
 #endif
 
+#ifdef USE_ACPI
        acpi_init();
+#endif
 
-#if defined(CONFIG_APIC) && !defined(CONFIG_SMP)
+#if defined(USE_APIC) && !defined(CONFIG_SMP)
        if (config_no_apic) {
                BOOT_VERBOSE(printf("APIC disabled, using legacy PIC\n"));
        }
@@ -555,7 +559,7 @@ PRIVATE void ser_debug(const int c)
        TOGGLECASE('8', VF_SCHEDULING)
        TOGGLECASE('9', VF_PICKPROC)
 #endif
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        case 'I':
                dump_apic_irq_state();
                break;
index f49cb2b094f92bc4cfbca4ddce7399b7673f5f19..1f3f0a7065de72b615765d908255cd8d95b146e2 100644 (file)
@@ -16,7 +16,7 @@ _PROTOTYPE(void eoi_8259_slave,(void));
  * configurations. ACPI would be another option, however we don't support it
  * either
  */
-#if defined(CONFIG_APIC)
+#if defined(USE_APIC)
 #include "arch/i386/apic.h"
 
 #define hw_intr_mask(irq)      ioapic_mask_irq(irq)
index fd49ff2702ae816d18ce38ff9b0348a7c553dcad..e2a05c479782481588522843f61c6bc663925e18 100644 (file)
@@ -20,7 +20,7 @@
 #include "kernel/proto.h"
 #include "kernel/debug.h"
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
 #include "apic.h"
 #ifdef USE_WATCHDOG
 #include "kernel/watchdog.h"
@@ -901,7 +901,7 @@ PUBLIC int arch_phys_map(const int index,
        static char *ser_var = NULL;
 
        if(first) {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
                if(lapic_addr)
                        freeidx++;
                if (ioapic_enabled)
@@ -920,7 +920,7 @@ PUBLIC int arch_phys_map(const int index,
                first = 0;
        }
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        /* map the local APIC if enabled */
        if (index == 0) {
                if (!lapic_addr)
@@ -952,7 +952,7 @@ PUBLIC int arch_phys_map(const int index,
 
 PUBLIC int arch_phys_map_reply(const int index, const vir_bytes addr)
 {
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        /* if local APIC is enabled */
        if (index == 0 && lapic_addr) {
                lapic_addr_vaddr = addr;
@@ -1021,7 +1021,7 @@ PUBLIC int arch_enable_paging(struct proc * caller, const message * m_ptr)
        if (newmap(caller, caller, ep_data.mem_map) != OK)
                panic("arch_enable_paging: newmap failed");
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
        /* start using the virtual addresses */
 
        /* if local APIC is enabled */
index 29f54056f065aad7d58f4c4664742aec93f0f31e..f235944e345561372779136c7defb43bd14ffc7c 100644 (file)
@@ -57,7 +57,7 @@
  * the maximum needed by any given driver. The number of interrupt hooks may
  * be incremented on systems with many device drivers. 
  */
-#ifndef CONFIG_APIC
+#ifndef USE_APIC
 #define NR_IRQ_HOOKS     16            /* number of interrupt hooks */
 #else
 #define NR_IRQ_HOOKS     64            /* number of interrupt hooks */
index 177a3b7a270e5e52f0e4477a3b1a80006b459488..51adb7583536813c18d8dc5deaf687e54a0d6073 100644 (file)
@@ -54,7 +54,7 @@ EXTERN u32_t magictest;                       /* global magic number */
 EXTERN int verboseflags;
 #endif
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
 EXTERN int config_no_apic; /* optionaly turn off apic */
 EXTERN int config_apic_timer_x; /* apic timer slowdown factor */
 #endif
index 030f60860ae922075b75b1dee6d1c8127bdb46b8..73f375a4eb1a41b1fcaed5e1fb7c17a3617067b9 100644 (file)
@@ -1,10 +1,6 @@
 #ifndef KERNEL_H
 #define KERNEL_H
 
-/* APIC is turned on by default */
-#ifndef CONFIG_APIC
-#define CONFIG_APIC
-#endif
 /* boot verbose */
 #define CONFIG_BOOT_VERBOSE
 
index 8b2e0eb3a31a45a0cd2c4f96c9a5dede78c4ff6f..55f8a28bf36fd34fa38b5bece63e07ae7262e39d 100644 (file)
@@ -93,7 +93,7 @@ PUBLIC void cstart(
        if (value) serial_debug_baud = atoi(value);
   }
 
-#ifdef CONFIG_APIC
+#ifdef USE_APIC
   value = env_get("no_apic");
   if(value)
        config_no_apic = atoi(value);
index 46a1928c78a8335ec62f1431dd17efeb29eb0bbd..d3f1197121d6430c362d690004c7fa38a81f7de2 100644 (file)
@@ -758,7 +758,7 @@ _MKVARS.yes= \
        MKYP
 #MINIX-specific vars
 _MKVARS.yes+= \
-       MKWATCHDOG
+       MKWATCHDOG MKACPI MKAPIC
 .for var in ${_MKVARS.yes}
 ${var}?=       yes
 .endfor
@@ -819,6 +819,8 @@ MKNLS:=             no
 # MINIX
 .if ${MKEMBED} == "yes"
 MKWATCHDOG:=   no
+MKACPI:=       no
+MKAPIC:=       no
 .endif
 
 #
@@ -880,7 +882,7 @@ ${var}?= no
 # variable is set to "no".
 #
 .for var in USE_HESIOD USE_INET6 USE_KERBEROS USE_LDAP USE_PAM USE_YP \
-USE_WATCHDOG
+USE_WATCHDOG USE_ACPI USE_APIC
 .if (${${var:S/USE_/MK/}} == "no")
 ${var}:= no
 .else