File: setjmp.S

package info (click to toggle)
picolibc 1.8-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 31,616 kB
  • sloc: ansic: 312,308; asm: 22,739; perl: 2,414; sh: 1,619; python: 1,019; pascal: 329; exp: 287; makefile: 164; xml: 40; cpp: 10
file content (52 lines) | stat: -rw-r--r-- 882 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Copyright (c) 2003 Anthony Green <green@moxielogic.com> */
/* This is a simple version of setjmp and longjmp for iq2000. */


/* int setjmp (jmp_buf);  */
	.globl	setjmp
	.ent	setjmp
setjmp:
	sw	r16,0(r4)	/* rs0 */
	sw	r17,4(r4)	/* rs1 */
	sw	r18,8(r4)	/* rs2 */
	sw	r19,12(r4)	/* rs3 */
	sw	r20,16(r4)	/* rs4 */
	sw	r21,20(r4)	/* rs5 */
	sw	r22,24(r4)	/* rs6 */
	sw	r23,28(r4)	/* rs7 */
	sw	r30,32(r4)	/* rs8 */

	sw	r29,36(r4)
	sw	r31,40(r4)

	move	r2,r0

	j	r31

	.end	setjmp

/* volatile void longjmp (jmp_buf, int);  */
	.globl	longjmp
	.ent	longjmp
longjmp:
	lw	r16,0(r4)	/* rs0 */
	lw	r17,4(r4)	/* rs1 */
	lw	r18,8(r4)	/* rs2 */
	lw	r19,12(r4)	/* rs3 */
	lw	r20,16(r4)	/* rs4 */
	lw	r21,20(r4)	/* rs5 */
	lw	r22,24(r4)	/* rs6 */
	lw	r23,28(r4)	/* rs7 */
	lw	r30,32(r4)	/* rs8 */

	lw	r29,36(r4)
	lw	r31,40(r4)

	bne	r5,r0,1f
	li	r5,1
1:
	move	r2,r5

	j	r31

	.end longjmp