0001
0002
0003
0004
0005
0006
0007
0008 #include <asm/pstate.h>
0009 #include <asm/cpudata.h>
0010 #include <asm/thread_info.h>
0011
0012 .text
0013 .globl prom_cif_direct
0014 prom_cif_direct:
0015 save %sp, -192, %sp
0016 sethi %hi(p1275buf), %o1
0017 or %o1, %lo(p1275buf), %o1
0018 ldx [%o1 + 0x0008], %l2 ! prom_cif_handler
0019 mov %g4, %l0
0020 mov %g5, %l1
0021 mov %g6, %l3
0022 call %l2
0023 mov %i0, %o0 ! prom_args
0024 mov %l0, %g4
0025 mov %l1, %g5
0026 mov %l3, %g6
0027 ret
0028 restore
0029
0030 .globl prom_cif_callback
0031 prom_cif_callback:
0032 sethi %hi(p1275buf), %o1
0033 or %o1, %lo(p1275buf), %o1
0034 save %sp, -192, %sp
0035 TRAP_LOAD_THREAD_REG(%g6, %g1)
0036 LOAD_PER_CPU_BASE(%g5, %g6, %g4, %g3, %o0)
0037 ldx [%g6 + TI_TASK], %g4
0038 call prom_world
0039 mov 0, %o0
0040 ldx [%i1 + 0x000], %l2
0041 call %l2
0042 mov %i0, %o0
0043 mov %o0, %l1
0044 call prom_world
0045 mov 1, %o0
0046 ret
0047 restore %l1, 0, %o0
0048