1*76e7630dSPuranjay Mohan // SPDX-License-Identifier: GPL-2.0 2*76e7630dSPuranjay Mohan /* Function the compiler may split into a hot part and a foo.cold part. */ 3*76e7630dSPuranjay Mohan 4*76e7630dSPuranjay Mohan static const char __modinfo[] 5*76e7630dSPuranjay Mohan __attribute__((section(".modinfo"), used, aligned(1))) = "\0name=vmlinux"; 6*76e7630dSPuranjay Mohan slow_path(int x)7*76e7630dSPuranjay Mohanstatic void __attribute__((cold, noinline)) slow_path(int x) 8*76e7630dSPuranjay Mohan { 9*76e7630dSPuranjay Mohan __asm__ volatile("" :: "r"(x)); 10*76e7630dSPuranjay Mohan } 11*76e7630dSPuranjay Mohan target(int x)12*76e7630dSPuranjay Mohanint target(int x) 13*76e7630dSPuranjay Mohan { 14*76e7630dSPuranjay Mohan if (__builtin_expect(x < 0, 0)) 15*76e7630dSPuranjay Mohan slow_path(x); 16*76e7630dSPuranjay Mohan #ifdef PATCHED 17*76e7630dSPuranjay Mohan return x + 2; 18*76e7630dSPuranjay Mohan #else 19*76e7630dSPuranjay Mohan return x + 1; 20*76e7630dSPuranjay Mohan #endif 21*76e7630dSPuranjay Mohan } 22