mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 979894. Add unwind information for pixman arm functions. r=jseward
This isn't technically correct because these functions will never call functions that throw exceptions, however it lets the profiler unwind them. The unwinding will also probably be wrong during prologue/epilogue. The right solution is probably to use cfi.
This commit is contained in:
parent
b304f198e0
commit
7f48f279b5
@ -954,6 +954,7 @@ generate_composite_function \
|
||||
*/
|
||||
.macro pixman_composite_over_n_8_0565_init
|
||||
add DUMMY, sp, #ARGS_STACK_OFFSET
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d11[0]}, [DUMMY]
|
||||
vdup.8 d8, d11[0]
|
||||
@ -981,6 +982,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_over_8888_n_0565_init
|
||||
add DUMMY, sp, #(ARGS_STACK_OFFSET + 8)
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d24[0]}, [DUMMY]
|
||||
vdup.8 d24, d24[3]
|
||||
@ -1447,6 +1449,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_over_n_8_8888_init
|
||||
add DUMMY, sp, #ARGS_STACK_OFFSET
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d11[0]}, [DUMMY]
|
||||
vdup.8 d8, d11[0]
|
||||
@ -1518,6 +1521,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_over_n_8_8_init
|
||||
add DUMMY, sp, #ARGS_STACK_OFFSET
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d8[0]}, [DUMMY]
|
||||
vdup.8 d8, d8[3]
|
||||
@ -1619,6 +1623,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_over_n_8888_8888_ca_init
|
||||
add DUMMY, sp, #ARGS_STACK_OFFSET
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d11[0]}, [DUMMY]
|
||||
vdup.8 d8, d11[0]
|
||||
@ -1788,6 +1793,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_over_n_8888_0565_ca_init
|
||||
add DUMMY, sp, #ARGS_STACK_OFFSET
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d11[0]}, [DUMMY]
|
||||
vdup.8 d8, d11[0]
|
||||
@ -1901,6 +1907,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_add_n_8_8_init
|
||||
add DUMMY, sp, #ARGS_STACK_OFFSET
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d11[0]}, [DUMMY]
|
||||
vdup.8 d11, d11[3]
|
||||
@ -2207,6 +2214,7 @@ generate_composite_function_single_scanline \
|
||||
|
||||
.macro pixman_composite_over_8888_n_8888_init
|
||||
add DUMMY, sp, #48
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d15[0]}, [DUMMY]
|
||||
vdup.8 d15, d15[3]
|
||||
@ -2579,6 +2587,7 @@ generate_composite_function \
|
||||
|
||||
.macro pixman_composite_over_0565_n_0565_init
|
||||
add DUMMY, sp, #(ARGS_STACK_OFFSET + 8)
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
vld1.32 {d15[0]}, [DUMMY]
|
||||
vdup.8 d15, d15[3]
|
||||
@ -3132,13 +3141,16 @@ pixman_asm_function fname
|
||||
TMP4 .req r9
|
||||
STRIDE .req r2
|
||||
|
||||
.fnstart
|
||||
mov ip, sp
|
||||
.save {r4, r5, r6, r7, r8, r9}
|
||||
push {r4, r5, r6, r7, r8, r9}
|
||||
mov PF_OFFS, #prefetch_distance
|
||||
ldmia ip, {WB, X, UX, WIDTH}
|
||||
mul PF_OFFS, PF_OFFS, UX
|
||||
|
||||
.if ((flags) & BILINEAR_FLAG_USE_ALL_NEON_REGS) != 0
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
.endif
|
||||
|
||||
@ -3232,6 +3244,7 @@ pixman_asm_function fname
|
||||
.endif
|
||||
pop {r4, r5, r6, r7, r8, r9}
|
||||
bx lr
|
||||
.fnend
|
||||
|
||||
.unreq OUT
|
||||
.unreq TOP
|
||||
|
@ -639,6 +639,8 @@ local skip1
|
||||
.type fname, %function
|
||||
#endif
|
||||
fname:
|
||||
.fnstart
|
||||
.save {r4-r12, lr}
|
||||
push {r4-r12, lr} /* save all registers */
|
||||
|
||||
/*
|
||||
@ -816,6 +818,7 @@ fname:
|
||||
|
||||
init
|
||||
.if regs_shortage
|
||||
.save {r0, r1}
|
||||
push {r0, r1}
|
||||
.endif
|
||||
subs H, H, #1
|
||||
@ -901,6 +904,7 @@ fname:
|
||||
.endif
|
||||
cleanup
|
||||
pop {r4-r12, pc} /* exit */
|
||||
.fnend
|
||||
|
||||
.purgem fetch_src_pixblock
|
||||
.purgem pixld_src
|
||||
@ -953,6 +957,7 @@ fname:
|
||||
.type fname, %function
|
||||
#endif
|
||||
fname:
|
||||
.fnstart
|
||||
.set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
|
||||
/*
|
||||
* Make some macro arguments globally visible and accessible
|
||||
@ -987,6 +992,7 @@ fname:
|
||||
.endm
|
||||
|
||||
ldr UNIT_X, [sp]
|
||||
.save {r4-r8, lr}
|
||||
push {r4-r8, lr}
|
||||
ldr SRC_WIDTH_FIXED, [sp, #(24 + 4)]
|
||||
.if mask_bpp != 0
|
||||
@ -1102,6 +1108,7 @@ fname:
|
||||
.purgem fetch_src_pixblock
|
||||
.purgem pixld_src
|
||||
|
||||
.fnend
|
||||
.endfunc
|
||||
.endm
|
||||
|
||||
@ -1128,6 +1135,7 @@ fname:
|
||||
*/
|
||||
|
||||
.macro default_init_need_all_regs
|
||||
.vsave {d8-d15}
|
||||
vpush {d8-d15}
|
||||
.endm
|
||||
|
||||
|
@ -680,12 +680,15 @@
|
||||
ORIG_W .req r14 /* width (pixels) */
|
||||
|
||||
fname:
|
||||
.fnstart
|
||||
.save {r4-r11, lr}
|
||||
push {r4-r11, lr} /* save all registers */
|
||||
|
||||
subs Y, Y, #1
|
||||
blo 199f
|
||||
|
||||
#ifdef DEBUG_PARAMS
|
||||
.pad #9*4
|
||||
sub sp, sp, #9*4
|
||||
#endif
|
||||
|
||||
@ -857,6 +860,7 @@ fname:
|
||||
#endif
|
||||
199:
|
||||
pop {r4-r11, pc} /* exit */
|
||||
.fnend
|
||||
|
||||
.ltorg
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user