comparison dyncallback/dyncall_thunk_ppc32_sysv.c @ 155:bbefb8b8e74c

- sparc32 thunk code - replaced some c++ comments with old c ones - whitespace cosmetics
author cslag
date Thu, 24 Nov 2016 23:47:31 +0000
parents d0787f3b81fb
children f5577f6bf97a
comparison
equal deleted inserted replaced
154:3729a99ef03c 155:bbefb8b8e74c
29 static unsigned short lo16(x) { return ( (unsigned short) ((unsigned int)x) ); } 29 static unsigned short lo16(x) { return ( (unsigned short) ((unsigned int)x) ); }
30 30
31 void dcbInitThunk(DCThunk* p, void (*entry)()) 31 void dcbInitThunk(DCThunk* p, void (*entry)())
32 { 32 {
33 /* 33 /*
34 0: 3d 60 00 00 lis r11,0 34 0: 3d 60 00 00 lis r11,0
35 4: 61 6b 00 01 ori r11,r11,1 35 4: 61 6b 00 01 ori r11,r11,1
36 8: 81 82 00 14 lwz r12,20(r2) 36 8: 81 82 00 14 lwz r12,20(r2)
37 c: 7d 89 03 a6 mtctr r12 37 c: 7d 89 03 a6 mtctr r12
38 10: 4e 80 04 20 bctr 38 10: 4e 80 04 20 bctr
39 */ 39 */
40 p->code_load_hi = 0x3d60U; /* lis r11, HI16(p) */ 40 p->code_load_hi = 0x3d60U; /* lis r11, HI16(p) */
41 p->addr_self_hi = hi16(p); 41 p->addr_self_hi = hi16(p);
42 p->code_load_lo = 0x616bU; /* ori r11, r11, LO16(p) */ 42 p->code_load_lo = 0x616bU; /* ori r11, r11, LO16(p) */
43 p->addr_self_lo = lo16(p); 43 p->addr_self_lo = lo16(p);
44 p->code_jump[0] = 0x818b0014U; /* lwz r12, 20(r11) */ 44 p->code_jump[0] = 0x818b0014U; /* lwz r12, 20(r11) */
45 p->code_jump[1] = 0x7d8903a6U; /* mtclr r12 */ 45 p->code_jump[1] = 0x7d8903a6U; /* mtclr r12 */
46 p->code_jump[2] = 0x4e800420U; /* bctr */ 46 p->code_jump[2] = 0x4e800420U; /* bctr */
47 p->addr_entry = entry; 47 p->addr_entry = entry;