20 */
21 /*
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 * Copyright 2019 Joyent, Inc.
25 */
26
27 /*
28 * exit routine from linker/loader to kernel
29 */
30
31 #include <sys/asm_linkage.h>
32 #include <sys/reboot.h>
33
34 /*
35 * exitto is called from main() and does 1 things
36 * It then jumps directly to the just-loaded standalone.
37 * There is NO RETURN from exitto().
38 */
39
40 #if defined(lint)
41
42 /* ARGSUSED */
43 void
44 exitto(caddr_t entrypoint)
45 {}
46
47 #else /* lint */
48
49
50 ENTRY(exitto)
51
52 /preserve destination in temporary register %r11
53 movq %rdi, %r11
54
55 /holds address of array of pointers to functions
56 / $arg1
57 movq $romp, %rax
58 movq (%rax), %rdi
59
60 /holds address of bootops structure
61 / $arg2
62 movq $ops, %rax
63 movq (%rax), %rdx
64
65 / Call destination
66 INDIRECT_CALL_REG(r11)
67
68 SET_SIZE(exitto)
69
70 #endif
71
|
20 */
21 /*
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 * Copyright 2019 Joyent, Inc.
25 */
26
27 /*
28 * exit routine from linker/loader to kernel
29 */
30
31 #include <sys/asm_linkage.h>
32 #include <sys/reboot.h>
33
34 /*
35 * exitto is called from main() and does 1 things
36 * It then jumps directly to the just-loaded standalone.
37 * There is NO RETURN from exitto().
38 */
39
40
41 ENTRY(exitto)
42
43 /preserve destination in temporary register %r11
44 movq %rdi, %r11
45
46 /holds address of array of pointers to functions
47 / $arg1
48 movq $romp, %rax
49 movq (%rax), %rdi
50
51 /holds address of bootops structure
52 / $arg2
53 movq $ops, %rax
54 movq (%rax), %rdx
55
56 / Call destination
57 INDIRECT_CALL_REG(r11)
58
59 SET_SIZE(exitto)
60
|