view src/swis.s @ 10098:72e4b7f90465 v7.4.2320

commit https://github.com/vim/vim/commit/dda933d06c06c2792bd686d059f6ad19191ad30b Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 3 21:04:58 2016 +0200 patch 7.4.2320 Problem: Redraw problem when using 'incsearch'. Solution: Save the current view when deleting characters. (Christian Brabandt) Fix that the '" mark is set in the wrong position. Don't change the search start when using BS.
author Christian Brabandt <cb@256bit.org>
date Sat, 03 Sep 2016 21:15:06 +0200
parents 3fc0f57ecb91
children
line wrap: on
line source

; Thomas Leonard
; 24/5/98

ar0	rn	0
ar1	rn	1
ar2	rn	2
ar3	rn	3
ar4	rn	4
ar5	rn	5
ar6	rn	6
ar7	rn	7
ar10	rn	10
ar11	rn	11
lk	rn	14
ar15	rn	15

	AREA	DATA
	align	4

	export	|r0|
r0:	dcd	0

	export	|r1|
r1:	dcd	0

	export	|r2|
r2:	dcd	0

	export	|r3|
r3:	dcd	0

	export	|r4|
r4:	dcd	0

	export	|r5|
r5:	dcd	0

	export	|r6|
r6:	dcd	0

	export	|r7|
r7:	dcd	0

	export	|time_of_last_poll|
time_of_last_poll:  dcd	0

	AREA	CODE, READONLY
	align 4
	import	|r0|
	export	|swi|
	=	"swi"
	align 4
swi:
	; r0 = swi number
	stmfd	sp!,{ar4-ar10,lk}
	orr	ar10,ar0,#1<<17		;always use the X form
	mov	ar0,ar1
	mov	ar1,ar2
	mov	ar2,ar3
	add	ar3,sp,#4*8
	ldmia	ar3,{ar3-ar7}
	swi	0x6f		; OS_CallASWI
	ldr	ar10,regs_addr
	stmia	ar10,{ar0-ar7}
	ldmvcfd	sp!,{ar4-ar10,pc}^
	; report the error and quit on Cancel
	mov	r1,#0x17
	adr	r2,s_title
	swi	0x400df		; Wimp_ReportError
	cmp	r1,#1			;OK selected?
	ldmeqfd	sp!,{ar4-ar10,pc}^	;yes - try to continue
	swi	0x11			;no  - die (OS_Exit)
s_title:
	= "Nasty error - Cancel to quit"
	= 0

	align 4
	export	|xswi|
	=	"xswi"
	align 4
xswi:
	; r0 = swi number
	stmfd	sp!,{ar4-ar10,lk}
	orr	ar10,ar0,#1<<17		;always use the X form
	mov	ar0,ar1
	mov	ar1,ar2
	mov	ar2,ar3
	add	ar3,sp,#4*8
	ldmia	ar3,{ar3-ar7}
	swi	0x6f		; OS_CallASWI
	ldr	ar10,regs_addr
	stmia	ar10,{ar0-ar7}
	mov	ar0,#0
	orr	ar0,ar0,ar15
	ldmfd	sp!,{ar4-ar10,pc}^

regs_addr:
	dcd	r0

	; The Wimp_Poll swis have to be done specially because,
	; for some reason, r13 sometimes gets corrupted by Wimp_Poll
	; (eg when running FileFind)
	AREA	CODE, READONLY
	align 4
	import  |time_of_last_poll|
	export	|wimp_poll|
	=	"wimp_poll"
	align 4
wimp_poll:
	mov	ar3,sp
	swi	0x400c7		; Wimp_Poll
	mov	sp,ar3

	mov	ar3,ar0
	swi	0x42		; OS_ReadMonotonicTime
	ldr	ar2,addr_time
	str	ar0,[ar2]
	mov	ar0,ar3

	mov	ar2,#0
	wfs	ar2		; Write floating point status. Needed?
	movs	pc,lk

	align 4
	export	|wimp_pollidle|
	=	"wimp_pollidle"
	align 4
wimp_pollidle:
	mov	ar3,sp
	swi	0x400e1		; Wimp_PollIdle
	mov	sp,ar3

	mov	ar3,ar0
	swi	0x42		; OS_ReadMonotonicTime
	ldr	ar2,addr_time
	str	ar0,[ar2]
	mov	ar0,ar3

	mov	ar2,#0
	wfs	ar2		; Write floating point status. Needed?
	movs	pc,lk

addr_time: dcd	time_of_last_poll