From ef3427454ec458ff9cbea67bf545db64840c6c92 Mon Sep 17 00:00:00 2001 From: Lionel Sambuc Date: Wed, 15 Jul 2015 17:03:16 +0200 Subject: [PATCH] extend to 64 cores for AMD SMP systems Change-Id: Ifa96ecaa60e3e9d5679d7d89af4a9148603d07cf --- minix/kernel/arch/i386/include/arch_proto.h | 56 ++++++++++++++++++++ minix/kernel/arch/i386/mpx.S | 56 ++++++++++++++++++++ minix/kernel/arch/i386/protect.c | 58 ++++++++++++++++++++- 3 files changed, 169 insertions(+), 1 deletion(-) diff --git a/minix/kernel/arch/i386/include/arch_proto.h b/minix/kernel/arch/i386/include/arch_proto.h index 3aa879096..0c25c6236 100644 --- a/minix/kernel/arch/i386/include/arch_proto.h +++ b/minix/kernel/arch/i386/include/arch_proto.h @@ -64,6 +64,62 @@ void ipc_entry_syscall_cpu4(void); void ipc_entry_syscall_cpu5(void); void ipc_entry_syscall_cpu6(void); void ipc_entry_syscall_cpu7(void); +void ipc_entry_syscall_cpu8(void); +void ipc_entry_syscall_cpu9(void); +void ipc_entry_syscall_cpu10(void); +void ipc_entry_syscall_cpu11(void); +void ipc_entry_syscall_cpu12(void); +void ipc_entry_syscall_cpu13(void); +void ipc_entry_syscall_cpu14(void); +void ipc_entry_syscall_cpu15(void); +void ipc_entry_syscall_cpu16(void); +void ipc_entry_syscall_cpu17(void); +void ipc_entry_syscall_cpu18(void); +void ipc_entry_syscall_cpu19(void); +void ipc_entry_syscall_cpu20(void); +void ipc_entry_syscall_cpu21(void); +void ipc_entry_syscall_cpu22(void); +void ipc_entry_syscall_cpu23(void); +void ipc_entry_syscall_cpu24(void); +void ipc_entry_syscall_cpu25(void); +void ipc_entry_syscall_cpu26(void); +void ipc_entry_syscall_cpu27(void); +void ipc_entry_syscall_cpu28(void); +void ipc_entry_syscall_cpu29(void); +void ipc_entry_syscall_cpu30(void); +void ipc_entry_syscall_cpu31(void); +void ipc_entry_syscall_cpu32(void); +void ipc_entry_syscall_cpu33(void); +void ipc_entry_syscall_cpu34(void); +void ipc_entry_syscall_cpu35(void); +void ipc_entry_syscall_cpu36(void); +void ipc_entry_syscall_cpu37(void); +void ipc_entry_syscall_cpu38(void); +void ipc_entry_syscall_cpu39(void); +void ipc_entry_syscall_cpu40(void); +void ipc_entry_syscall_cpu41(void); +void ipc_entry_syscall_cpu42(void); +void ipc_entry_syscall_cpu43(void); +void ipc_entry_syscall_cpu44(void); +void ipc_entry_syscall_cpu45(void); +void ipc_entry_syscall_cpu46(void); +void ipc_entry_syscall_cpu47(void); +void ipc_entry_syscall_cpu48(void); +void ipc_entry_syscall_cpu49(void); +void ipc_entry_syscall_cpu50(void); +void ipc_entry_syscall_cpu51(void); +void ipc_entry_syscall_cpu52(void); +void ipc_entry_syscall_cpu53(void); +void ipc_entry_syscall_cpu54(void); +void ipc_entry_syscall_cpu55(void); +void ipc_entry_syscall_cpu56(void); +void ipc_entry_syscall_cpu57(void); +void ipc_entry_syscall_cpu58(void); +void ipc_entry_syscall_cpu59(void); +void ipc_entry_syscall_cpu60(void); +void ipc_entry_syscall_cpu61(void); +void ipc_entry_syscall_cpu62(void); +void ipc_entry_syscall_cpu63(void); void kernel_call_entry_orig(void); void kernel_call_entry_um(void); void level0_call(void); diff --git a/minix/kernel/arch/i386/mpx.S b/minix/kernel/arch/i386/mpx.S index fa38697e5..1193e21b2 100644 --- a/minix/kernel/arch/i386/mpx.S +++ b/minix/kernel/arch/i386/mpx.S @@ -216,6 +216,62 @@ ipc_entry_syscall_percpu(4) ipc_entry_syscall_percpu(5) ipc_entry_syscall_percpu(6) ipc_entry_syscall_percpu(7) +ipc_entry_syscall_percpu(8) +ipc_entry_syscall_percpu(9) +ipc_entry_syscall_percpu(10) +ipc_entry_syscall_percpu(11) +ipc_entry_syscall_percpu(12) +ipc_entry_syscall_percpu(13) +ipc_entry_syscall_percpu(14) +ipc_entry_syscall_percpu(15) +ipc_entry_syscall_percpu(16) +ipc_entry_syscall_percpu(17) +ipc_entry_syscall_percpu(18) +ipc_entry_syscall_percpu(19) +ipc_entry_syscall_percpu(20) +ipc_entry_syscall_percpu(21) +ipc_entry_syscall_percpu(22) +ipc_entry_syscall_percpu(23) +ipc_entry_syscall_percpu(24) +ipc_entry_syscall_percpu(25) +ipc_entry_syscall_percpu(26) +ipc_entry_syscall_percpu(27) +ipc_entry_syscall_percpu(28) +ipc_entry_syscall_percpu(29) +ipc_entry_syscall_percpu(30) +ipc_entry_syscall_percpu(31) +ipc_entry_syscall_percpu(32) +ipc_entry_syscall_percpu(33) +ipc_entry_syscall_percpu(34) +ipc_entry_syscall_percpu(35) +ipc_entry_syscall_percpu(36) +ipc_entry_syscall_percpu(37) +ipc_entry_syscall_percpu(38) +ipc_entry_syscall_percpu(39) +ipc_entry_syscall_percpu(40) +ipc_entry_syscall_percpu(41) +ipc_entry_syscall_percpu(42) +ipc_entry_syscall_percpu(43) +ipc_entry_syscall_percpu(44) +ipc_entry_syscall_percpu(45) +ipc_entry_syscall_percpu(46) +ipc_entry_syscall_percpu(47) +ipc_entry_syscall_percpu(48) +ipc_entry_syscall_percpu(49) +ipc_entry_syscall_percpu(50) +ipc_entry_syscall_percpu(51) +ipc_entry_syscall_percpu(52) +ipc_entry_syscall_percpu(53) +ipc_entry_syscall_percpu(54) +ipc_entry_syscall_percpu(55) +ipc_entry_syscall_percpu(56) +ipc_entry_syscall_percpu(57) +ipc_entry_syscall_percpu(58) +ipc_entry_syscall_percpu(59) +ipc_entry_syscall_percpu(60) +ipc_entry_syscall_percpu(61) +ipc_entry_syscall_percpu(62) +ipc_entry_syscall_percpu(63) ENTRY(ipc_entry_sysenter) /* SYSENTER simply sets kernel segments, EIP to here, and ESP diff --git a/minix/kernel/arch/i386/protect.c b/minix/kernel/arch/i386/protect.c index e75022de1..69e25e1cc 100644 --- a/minix/kernel/arch/i386/protect.c +++ b/minix/kernel/arch/i386/protect.c @@ -211,7 +211,63 @@ int tss_init(unsigned cpu, void * kernel_stack) set_star_cpu(5); set_star_cpu(6); set_star_cpu(7); - assert(CONFIG_MAX_CPUS <= 8); + set_star_cpu(8); + set_star_cpu(9); + set_star_cpu(10); + set_star_cpu(11); + set_star_cpu(12); + set_star_cpu(13); + set_star_cpu(14); + set_star_cpu(15); + set_star_cpu(16); + set_star_cpu(17); + set_star_cpu(18); + set_star_cpu(19); + set_star_cpu(20); + set_star_cpu(21); + set_star_cpu(22); + set_star_cpu(23); + set_star_cpu(24); + set_star_cpu(25); + set_star_cpu(26); + set_star_cpu(27); + set_star_cpu(28); + set_star_cpu(29); + set_star_cpu(30); + set_star_cpu(31); + set_star_cpu(32); + set_star_cpu(33); + set_star_cpu(34); + set_star_cpu(35); + set_star_cpu(36); + set_star_cpu(37); + set_star_cpu(38); + set_star_cpu(39); + set_star_cpu(40); + set_star_cpu(41); + set_star_cpu(42); + set_star_cpu(43); + set_star_cpu(44); + set_star_cpu(45); + set_star_cpu(46); + set_star_cpu(47); + set_star_cpu(48); + set_star_cpu(49); + set_star_cpu(50); + set_star_cpu(51); + set_star_cpu(52); + set_star_cpu(53); + set_star_cpu(54); + set_star_cpu(55); + set_star_cpu(56); + set_star_cpu(57); + set_star_cpu(58); + set_star_cpu(59); + set_star_cpu(60); + set_star_cpu(61); + set_star_cpu(62); + set_star_cpu(63); + assert(CONFIG_MAX_CPUS <= 64); } return SEG_SELECTOR(index);