trap_subr64.S (275268) | trap_subr64.S (277334) |
---|---|
1/* $FreeBSD: head/sys/powerpc/aim/trap_subr64.S 275268 2014-11-29 20:54:33Z jhibbits $ */ | 1/* $FreeBSD: head/sys/powerpc/aim/trap_subr64.S 277334 2015-01-18 18:32:43Z nwhitehorn $ */ |
2/* $NetBSD: trap_subr.S,v 1.20 2002/04/22 23:20:08 kleink Exp $ */ 3 4/*- 5 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 6 * Copyright (C) 1995, 1996 TooLs GmbH. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without --- 295 unchanged lines hidden (view full) --- 305 306 ba cpu_reset 307CNAME(rstsize) = . - CNAME(rstcode) 308 309cpu_reset: 310 lis %r1,(tmpstk+TMPSTKSZ-48)@ha /* get new SP */ 311 addi %r1,%r1,(tmpstk+TMPSTKSZ-48)@l 312 | 2/* $NetBSD: trap_subr.S,v 1.20 2002/04/22 23:20:08 kleink Exp $ */ 3 4/*- 5 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 6 * Copyright (C) 1995, 1996 TooLs GmbH. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without --- 295 unchanged lines hidden (view full) --- 305 306 ba cpu_reset 307CNAME(rstsize) = . - CNAME(rstcode) 308 309cpu_reset: 310 lis %r1,(tmpstk+TMPSTKSZ-48)@ha /* get new SP */ 311 addi %r1,%r1,(tmpstk+TMPSTKSZ-48)@l 312 |
313 lis %r3,tocbase@ha 314 ld %r2,tocbase@l(%r3) | 313 GET_TOCBASE(%r2) |
315 bl CNAME(cpudep_ap_early_bootstrap) /* Set PCPU */ 316 nop 317 lis %r3,1@l 318 bl CNAME(pmap_cpu_bootstrap) /* Turn on virtual memory */ 319 nop 320 bl CNAME(cpudep_ap_bootstrap) /* Set up PCPU and stack */ 321 nop 322 mr %r1,%r3 /* Use new stack */ --- 117 unchanged lines hidden (view full) --- 440 std %r2,(PC_SLBSAVE+120)(%r1) 441 mfctr %r2 /* save CTR */ 442 std %r2,(PC_SLBSAVE+128)(%r1) 443 444 /* Call handler */ 445 addi %r1,%r1,PC_SLBSTACK-48+1024 446 li %r2,~15 447 and %r1,%r1,%r2 | 314 bl CNAME(cpudep_ap_early_bootstrap) /* Set PCPU */ 315 nop 316 lis %r3,1@l 317 bl CNAME(pmap_cpu_bootstrap) /* Turn on virtual memory */ 318 nop 319 bl CNAME(cpudep_ap_bootstrap) /* Set up PCPU and stack */ 320 nop 321 mr %r1,%r3 /* Use new stack */ --- 117 unchanged lines hidden (view full) --- 439 std %r2,(PC_SLBSAVE+120)(%r1) 440 mfctr %r2 /* save CTR */ 441 std %r2,(PC_SLBSAVE+128)(%r1) 442 443 /* Call handler */ 444 addi %r1,%r1,PC_SLBSTACK-48+1024 445 li %r2,~15 446 and %r1,%r1,%r2 |
448 lis %r3,tocbase@ha 449 ld %r2,tocbase@l(%r3) | 447 GET_TOCBASE(%r2) |
450 mflr %r3 451 andi. %r3,%r3,0xff80 452 mfdar %r4 453 mfsrr0 %r5 454 bl handle_kernel_slb_spill 455 nop 456 457 /* Save r28-31, restore r4-r12 */ --- 220 unchanged lines hidden (view full) --- 678 679/* 680 * Now the common trap catching code. 681 */ 682k_trap: 683 FRAME_SETUP(PC_TEMPSAVE) 684/* Call C interrupt dispatcher: */ 685trapagain: | 448 mflr %r3 449 andi. %r3,%r3,0xff80 450 mfdar %r4 451 mfsrr0 %r5 452 bl handle_kernel_slb_spill 453 nop 454 455 /* Save r28-31, restore r4-r12 */ --- 220 unchanged lines hidden (view full) --- 676 677/* 678 * Now the common trap catching code. 679 */ 680k_trap: 681 FRAME_SETUP(PC_TEMPSAVE) 682/* Call C interrupt dispatcher: */ 683trapagain: |
686 lis %r3,tocbase@ha 687 ld %r2,tocbase@l(%r3) | 684 GET_TOCBASE(%r2) |
688 addi %r3,%r1,48 689 bl CNAME(powerpc_interrupt) 690 nop 691 692 .globl CNAME(trapexit) /* backtrace code sentinel */ 693CNAME(trapexit): 694/* Disable interrupts: */ 695 mfmsr %r3 --- 10 unchanged lines hidden (view full) --- 706 lis %r5, (TDF_ASTPENDING|TDF_NEEDRESCHED)@h 707 ori %r5,%r5, (TDF_ASTPENDING|TDF_NEEDRESCHED)@l 708 and. %r4,%r4,%r5 709 beq 1f 710 mfmsr %r3 /* re-enable interrupts */ 711 ori %r3,%r3,PSL_EE@l 712 mtmsr %r3 713 isync | 685 addi %r3,%r1,48 686 bl CNAME(powerpc_interrupt) 687 nop 688 689 .globl CNAME(trapexit) /* backtrace code sentinel */ 690CNAME(trapexit): 691/* Disable interrupts: */ 692 mfmsr %r3 --- 10 unchanged lines hidden (view full) --- 703 lis %r5, (TDF_ASTPENDING|TDF_NEEDRESCHED)@h 704 ori %r5,%r5, (TDF_ASTPENDING|TDF_NEEDRESCHED)@l 705 and. %r4,%r4,%r5 706 beq 1f 707 mfmsr %r3 /* re-enable interrupts */ 708 ori %r3,%r3,PSL_EE@l 709 mtmsr %r3 710 isync |
714 lis %r3,tocbase@ha 715 ld %r2,tocbase@l(%r3) | 711 GET_TOCBASE(%r2) |
716 addi %r3,%r1,48 717 bl CNAME(ast) 718 nop 719 .globl CNAME(asttrapexit) /* backtrace code sentinel #2 */ 720CNAME(asttrapexit): 721 b trapexit /* test ast ret value ? */ 7221: 723 FRAME_LEAVE(PC_TEMPSAVE) --- 31 unchanged lines hidden (view full) --- 755 andi. %r1,%r1,0xff00 756 mtsprg3 %r1 757 758 lis %r1,(tmpstk+TMPSTKSZ-48)@ha /* get new SP */ 759 addi %r1,%r1,(tmpstk+TMPSTKSZ-48)@l 760 761 FRAME_SETUP(PC_DBSAVE) 762/* Call C trap code: */ | 712 addi %r3,%r1,48 713 bl CNAME(ast) 714 nop 715 .globl CNAME(asttrapexit) /* backtrace code sentinel #2 */ 716CNAME(asttrapexit): 717 b trapexit /* test ast ret value ? */ 7181: 719 FRAME_LEAVE(PC_TEMPSAVE) --- 31 unchanged lines hidden (view full) --- 751 andi. %r1,%r1,0xff00 752 mtsprg3 %r1 753 754 lis %r1,(tmpstk+TMPSTKSZ-48)@ha /* get new SP */ 755 addi %r1,%r1,(tmpstk+TMPSTKSZ-48)@l 756 757 FRAME_SETUP(PC_DBSAVE) 758/* Call C trap code: */ |
763 lis %r3,tocbase@ha 764 ld %r2,tocbase@l(%r3) | 759 GET_TOCBASE(%r2) |
765 addi %r3,%r1,48 766 bl CNAME(db_trap_glue) 767 nop 768 or. %r3,%r3,%r3 769 bne dbleave 770/* This wasn't for KDB, so switch to real trap: */ 771 ld %r3,FRAME_EXC+48(%r1) /* save exception */ 772 GET_CPUINFO(%r4) --- 51 unchanged lines hidden --- | 760 addi %r3,%r1,48 761 bl CNAME(db_trap_glue) 762 nop 763 or. %r3,%r3,%r3 764 bne dbleave 765/* This wasn't for KDB, so switch to real trap: */ 766 ld %r3,FRAME_EXC+48(%r1) /* save exception */ 767 GET_CPUINFO(%r4) --- 51 unchanged lines hidden --- |