xref: /openbmc/linux/arch/arm/lib/csumipv6.S (revision 1da177e4)
11da177e4SLinus Torvalds/*
21da177e4SLinus Torvalds *  linux/arch/arm/lib/csumipv6.S
31da177e4SLinus Torvalds *
41da177e4SLinus Torvalds *  Copyright (C) 1995-1998 Russell King
51da177e4SLinus Torvalds *
61da177e4SLinus Torvalds * This program is free software; you can redistribute it and/or modify
71da177e4SLinus Torvalds * it under the terms of the GNU General Public License version 2 as
81da177e4SLinus Torvalds * published by the Free Software Foundation.
91da177e4SLinus Torvalds */
101da177e4SLinus Torvalds#include <linux/linkage.h>
111da177e4SLinus Torvalds#include <asm/assembler.h>
121da177e4SLinus Torvalds
131da177e4SLinus Torvalds		.text
141da177e4SLinus Torvalds
151da177e4SLinus TorvaldsENTRY(__csum_ipv6_magic)
161da177e4SLinus Torvalds		str	lr, [sp, #-4]!
171da177e4SLinus Torvalds		adds	ip, r2, r3
181da177e4SLinus Torvalds		ldmia	r1, {r1 - r3, lr}
191da177e4SLinus Torvalds		adcs	ip, ip, r1
201da177e4SLinus Torvalds		adcs	ip, ip, r2
211da177e4SLinus Torvalds		adcs	ip, ip, r3
221da177e4SLinus Torvalds		adcs	ip, ip, lr
231da177e4SLinus Torvalds		ldmia	r0, {r0 - r3}
241da177e4SLinus Torvalds		adcs	r0, ip, r0
251da177e4SLinus Torvalds		adcs	r0, r0, r1
261da177e4SLinus Torvalds		adcs	r0, r0, r2
271da177e4SLinus Torvalds		ldr	r2, [sp, #4]
281da177e4SLinus Torvalds		adcs	r0, r0, r3
291da177e4SLinus Torvalds		adcs	r0, r0, r2
301da177e4SLinus Torvalds		adcs	r0, r0, #0
311da177e4SLinus Torvalds		LOADREGS(fd, sp!, {pc})
321da177e4SLinus Torvalds
33