entry.S (fd11ff7380fe7c61f55e6caf33982edeab3fbc19) | entry.S (2319295dd8dbd076afa136bffb797ef726b605a0) |
---|---|
1/* 2 * Low-level system-call handling, trap handlers and context-switching 3 * 4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> 5 * Copyright (C) 2008-2009 PetaLogix 6 * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au> 7 * Copyright (C) 2001,2002 NEC Corporation 8 * Copyright (C) 2001,2002 Miles Bader <miles@gnu.org> --- 470 unchanged lines hidden (view full) --- 479 saved context). */ 480C_ENTRY(ret_from_fork): 481 bralid r15, schedule_tail; /* ...which is schedule_tail's arg */ 482 add r5, r3, r0; /* switch_thread returns the prev task */ 483 /* ( in the delay slot ) */ 484 brid ret_from_trap; /* Do normal trap return */ 485 add r3, r0, r0; /* Child's fork call should return 0. */ 486 | 1/* 2 * Low-level system-call handling, trap handlers and context-switching 3 * 4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> 5 * Copyright (C) 2008-2009 PetaLogix 6 * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au> 7 * Copyright (C) 2001,2002 NEC Corporation 8 * Copyright (C) 2001,2002 Miles Bader <miles@gnu.org> --- 470 unchanged lines hidden (view full) --- 479 saved context). */ 480C_ENTRY(ret_from_fork): 481 bralid r15, schedule_tail; /* ...which is schedule_tail's arg */ 482 add r5, r3, r0; /* switch_thread returns the prev task */ 483 /* ( in the delay slot ) */ 484 brid ret_from_trap; /* Do normal trap return */ 485 add r3, r0, r0; /* Child's fork call should return 0. */ 486 |
487C_ENTRY(ret_from_kernel_thread): 488 bralid r15, schedule_tail; /* ...which is schedule_tail's arg */ 489 add r5, r3, r0; /* switch_thread returns the prev task */ 490 /* ( in the delay slot ) */ 491 brald r15, r20 /* fn was left in r20 */ 492 addk r5, r0, r19 /* ... and argument - in r19 */ 493 brid sys_exit /* won't be returning... */ 494 addk r5, r0, r0 495 |
|
487C_ENTRY(sys_vfork): 488 brid microblaze_vfork /* Do real work (tail-call) */ 489 addik r5, r1, 0 490 491C_ENTRY(sys_clone): 492 bnei r6, 1f; /* See if child SP arg (arg 1) is 0. */ 493 lwi r6, r1, PT_R1; /* If so, use paret's stack ptr */ 4941: addik r7, r1, 0; /* Arg 2: parent context */ --- 543 unchanged lines hidden --- | 496C_ENTRY(sys_vfork): 497 brid microblaze_vfork /* Do real work (tail-call) */ 498 addik r5, r1, 0 499 500C_ENTRY(sys_clone): 501 bnei r6, 1f; /* See if child SP arg (arg 1) is 0. */ 502 lwi r6, r1, PT_R1; /* If so, use paret's stack ptr */ 5031: addik r7, r1, 0; /* Arg 2: parent context */ --- 543 unchanged lines hidden --- |