1f50a7f3dSThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */ 2cb96143dSMichael Ellerman/* 3cb96143dSMichael Ellerman * Copyright 2013, Michael Ellerman, IBM Corp. 4cb96143dSMichael Ellerman */ 5cb96143dSMichael Ellerman 60a6121cfSMichael Ellerman#include <ppc-asm.h> 70a6121cfSMichael Ellerman 8cb96143dSMichael Ellerman .text 9cb96143dSMichael Ellerman 100a6121cfSMichael EllermanFUNC_START(thirty_two_instruction_loop) 110a6121cfSMichael Ellerman cmpdi r3,0 12cb96143dSMichael Ellerman beqlr 130a6121cfSMichael Ellerman addi r4,r3,1 140a6121cfSMichael Ellerman addi r4,r4,1 150a6121cfSMichael Ellerman addi r4,r4,1 160a6121cfSMichael Ellerman addi r4,r4,1 170a6121cfSMichael Ellerman addi r4,r4,1 180a6121cfSMichael Ellerman addi r4,r4,1 190a6121cfSMichael Ellerman addi r4,r4,1 200a6121cfSMichael Ellerman addi r4,r4,1 210a6121cfSMichael Ellerman addi r4,r4,1 220a6121cfSMichael Ellerman addi r4,r4,1 230a6121cfSMichael Ellerman addi r4,r4,1 240a6121cfSMichael Ellerman addi r4,r4,1 250a6121cfSMichael Ellerman addi r4,r4,1 260a6121cfSMichael Ellerman addi r4,r4,1 270a6121cfSMichael Ellerman addi r4,r4,1 280a6121cfSMichael Ellerman addi r4,r4,1 290a6121cfSMichael Ellerman addi r4,r4,1 300a6121cfSMichael Ellerman addi r4,r4,1 310a6121cfSMichael Ellerman addi r4,r4,1 320a6121cfSMichael Ellerman addi r4,r4,1 330a6121cfSMichael Ellerman addi r4,r4,1 340a6121cfSMichael Ellerman addi r4,r4,1 350a6121cfSMichael Ellerman addi r4,r4,1 360a6121cfSMichael Ellerman addi r4,r4,1 370a6121cfSMichael Ellerman addi r4,r4,1 380a6121cfSMichael Ellerman addi r4,r4,1 390a6121cfSMichael Ellerman addi r4,r4,1 400a6121cfSMichael Ellerman addi r4,r4,1 # 28 addi's 410a6121cfSMichael Ellerman subi r3,r3,1 420a6121cfSMichael Ellerman b FUNC_NAME(thirty_two_instruction_loop) 430a6121cfSMichael EllermanFUNC_END(thirty_two_instruction_loop) 44*7481cad4SMichael Ellerman 45*7481cad4SMichael EllermanFUNC_START(thirty_two_instruction_loop_with_ll_sc) 46*7481cad4SMichael Ellerman cmpdi r3,0 47*7481cad4SMichael Ellerman beqlr 48*7481cad4SMichael Ellerman addi r5,r5,1 49*7481cad4SMichael Ellerman addi r5,r5,1 50*7481cad4SMichael Ellerman addi r5,r5,1 # 5 51*7481cad4SMichael Ellerman addi r5,r5,1 52*7481cad4SMichael Ellerman addi r5,r5,1 53*7481cad4SMichael Ellerman addi r5,r5,1 54*7481cad4SMichael Ellerman addi r5,r5,1 55*7481cad4SMichael Ellerman1: ldarx r6,0,r4 # 10 56*7481cad4SMichael Ellerman addi r5,r5,1 57*7481cad4SMichael Ellerman addi r5,r5,1 58*7481cad4SMichael Ellerman addi r5,r5,1 59*7481cad4SMichael Ellerman addi r5,r5,1 60*7481cad4SMichael Ellerman addi r5,r5,1 # 15 61*7481cad4SMichael Ellerman addi r5,r5,1 62*7481cad4SMichael Ellerman addi r5,r5,1 63*7481cad4SMichael Ellerman stdcx. r6,0,r4 64*7481cad4SMichael Ellerman bne- 1b 65*7481cad4SMichael Ellerman addi r5,r5,1 # 20 66*7481cad4SMichael Ellerman addi r5,r5,1 67*7481cad4SMichael Ellerman addi r5,r5,1 68*7481cad4SMichael Ellerman addi r5,r5,1 69*7481cad4SMichael Ellerman addi r5,r5,1 70*7481cad4SMichael Ellerman addi r5,r5,1 # 25 71*7481cad4SMichael Ellerman addi r5,r5,1 72*7481cad4SMichael Ellerman addi r5,r5,1 73*7481cad4SMichael Ellerman addi r5,r5,1 74*7481cad4SMichael Ellerman addi r5,r5,1 75*7481cad4SMichael Ellerman addi r5,r5,1 # 30 76*7481cad4SMichael Ellerman subi r3,r3,1 77*7481cad4SMichael Ellerman b FUNC_NAME(thirty_two_instruction_loop_with_ll_sc) 78*7481cad4SMichael EllermanFUNC_END(thirty_two_instruction_loop_with_ll_sc) 79