about summary refs log tree commit diff stats
path: root/linux/ports/linux-blob/port-blob-cpu.patch
blob: 85308064a1bf6b3490899fbcd5c92dcdf185e3d2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
--- enable_additional_cpu_optimizations_for_gcc_v4.9%2B_kernel_v3.15%2B.patch.orig	2017-02-14 20:15:28.629583505 +0000
+++ enable_additional_cpu_optimizations_for_gcc_v4.9%2B_kernel_v3.15%2B.patch	2017-02-14 20:22:54.566232597 +0000
@@ -440,7 +440,7 @@
  # generates cmov.
  config X86_CMOV
  	def_bool y
--	depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
+-	depends on (MK8 || MK7 || MCORE2 || MPSC || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
 +	depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
  
  config X86_MINIMUM_CPU_FAMILY
# A function which pushes n zeros on the stack. # Really only intended to be called from code generated by mu.subx (for array # vars on the stack). == code #? Entry: #? # . prologue #? 89/<- %ebp 4/r32/esp #? # #? 68/push 0xfcfdfeff/imm32 #? b8/copy-to-eax 0x34353637/imm32 #? $dump-stack0: #? (push-n-zero-bytes 4) #? 68/push 0x20/imm32 #? $dump-stack9: #? b8/copy-to-eax 1/imm32/exit #? cd/syscall 0x80/imm8 # This is not a regular function, so it won't be idiomatic. # Registers must be properly restored. # Registers can be spilled, but that modifies the stack and needs to be # cleaned up. # Overhead: # 62 + n*6 instructions to push n bytes. # If we just emitted code to push n zeroes, it would be: # 5 bytes for 4 zero bytes, so 1.25 bytes per zero. And that's not even # instructions. # But on the other hand it would destroy the instruction cache, where this # approach requires 15 instructions, fixed. # n must be positive push-n-zero-bytes: # n: int $push-n-zero-bytes:prologue: 89/<- *Push-n-zero-bytes-ebp 5/r32/ebp # spill ebp without affecting stack 89/<- %ebp 4/r32/esp $push-n-zero-bytes:copy-ra: # -- esp = ebp 89/<- *Push-n-zero-bytes-eax 0/r32/eax 8b/-> *esp 0/r32/eax 2b/subtract *(ebp+4) 4/r32/esp # -- esp+n = ebp 89/<- *esp 0/r32/eax 8b/-> *Push-n-zero-bytes-eax 0/r32/eax $push-n-zero-bytes:bulk-cleaning: 89/<- *Push-n-zero-bytes-esp 4/r32/esp 81 0/subop/add *Push-n-zero-bytes-esp 4/imm32 81 0/subop/add *(ebp+4) 4/imm32 (zero-out *Push-n-zero-bytes-esp *(ebp+4)) # n+4 $push-n-zero-bytes:epilogue: 8b/-> *Push-n-zero-bytes-ebp 5/r32/ebp # restore spill c3/return == data Push-n-zero-bytes-ebp: # (addr int) 0/imm32 Push-n-zero-bytes-esp: # (addr int) 0/imm32 Push-n-zero-bytes-eax: 0/imm32