trap_subr32.S (209975) | trap_subr32.S (214574) |
---|---|
1/* $FreeBSD: head/sys/powerpc/aim/trap_subr32.S 209975 2010-07-13 05:32:19Z nwhitehorn $ */ | 1/* $FreeBSD: head/sys/powerpc/aim/trap_subr32.S 214574 2010-10-30 23:07:30Z 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 --- 39 unchanged lines hidden (view full) --- 49 lwz sr,4*4(pmap); mtsr 4,sr; \ 50 lwz sr,5*4(pmap); mtsr 5,sr; \ 51 lwz sr,6*4(pmap); mtsr 6,sr; \ 52 lwz sr,7*4(pmap); mtsr 7,sr; \ 53 lwz sr,8*4(pmap); mtsr 8,sr; \ 54 lwz sr,9*4(pmap); mtsr 9,sr; \ 55 lwz sr,10*4(pmap); mtsr 10,sr; \ 56 lwz sr,11*4(pmap); mtsr 11,sr; \ | 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 --- 39 unchanged lines hidden (view full) --- 49 lwz sr,4*4(pmap); mtsr 4,sr; \ 50 lwz sr,5*4(pmap); mtsr 5,sr; \ 51 lwz sr,6*4(pmap); mtsr 6,sr; \ 52 lwz sr,7*4(pmap); mtsr 7,sr; \ 53 lwz sr,8*4(pmap); mtsr 8,sr; \ 54 lwz sr,9*4(pmap); mtsr 9,sr; \ 55 lwz sr,10*4(pmap); mtsr 10,sr; \ 56 lwz sr,11*4(pmap); mtsr 11,sr; \ |
57 lwz sr,12*4(pmap); mtsr 12,sr; \ | 57 /* Skip segment 12 (USER_SR), which is restored differently */ \ |
58 lwz sr,13*4(pmap); mtsr 13,sr; \ 59 lwz sr,14*4(pmap); mtsr 14,sr; \ 60 lwz sr,15*4(pmap); mtsr 15,sr; isync; 61 62/* 63 * User SRs are loaded through a pointer to the current pmap. 64 */ 65#define RESTORE_USER_SRS(pmap,sr) \ 66 GET_CPUINFO(pmap); \ 67 lwz pmap,PC_CURPMAP(pmap); \ 68 lwzu sr,PM_SR(pmap); \ | 58 lwz sr,13*4(pmap); mtsr 13,sr; \ 59 lwz sr,14*4(pmap); mtsr 14,sr; \ 60 lwz sr,15*4(pmap); mtsr 15,sr; isync; 61 62/* 63 * User SRs are loaded through a pointer to the current pmap. 64 */ 65#define RESTORE_USER_SRS(pmap,sr) \ 66 GET_CPUINFO(pmap); \ 67 lwz pmap,PC_CURPMAP(pmap); \ 68 lwzu sr,PM_SR(pmap); \ |
69 RESTORE_SRS(pmap,sr) | 69 RESTORE_SRS(pmap,sr) \ 70 /* Restore SR 12 */ \ 71 lwz sr,12*4(pmap); mtsr 12,sr |
70 71/* 72 * Kernel SRs are loaded directly from kernel_pmap_ 73 */ 74#define RESTORE_KERN_SRS(pmap,sr) \ 75 lis pmap,CNAME(kernel_pmap_store)@ha; \ 76 lwzu sr,CNAME(kernel_pmap_store)+PM_SR@l(pmap); \ 77 RESTORE_SRS(pmap,sr) --- 454 unchanged lines hidden (view full) --- 532 lwz %r1,PC_CURPCB(%r1) 533 RESTORE_KERN_SRS(%r30,%r31) /* enable kernel mapping */ 534 535/* 536 * Now the common trap catching code. 537 */ 538k_trap: 539 FRAME_SETUP(PC_TEMPSAVE) | 72 73/* 74 * Kernel SRs are loaded directly from kernel_pmap_ 75 */ 76#define RESTORE_KERN_SRS(pmap,sr) \ 77 lis pmap,CNAME(kernel_pmap_store)@ha; \ 78 lwzu sr,CNAME(kernel_pmap_store)+PM_SR@l(pmap); \ 79 RESTORE_SRS(pmap,sr) --- 454 unchanged lines hidden (view full) --- 534 lwz %r1,PC_CURPCB(%r1) 535 RESTORE_KERN_SRS(%r30,%r31) /* enable kernel mapping */ 536 537/* 538 * Now the common trap catching code. 539 */ 540k_trap: 541 FRAME_SETUP(PC_TEMPSAVE) |
542 /* Restore USER_SR */ 543 GET_CPUINFO(%r30) 544 lwz %r30,PC_CURPCB(%r30) 545 lwz %r30,PCB_AIM_USR_VSID(%r30) 546 mtsr USER_SR,%r30; sync; isync |
|
540/* Call C interrupt dispatcher: */ 541trapagain: 542 addi %r3,%r1,8 543 bl CNAME(powerpc_interrupt) 544 .globl CNAME(trapexit) /* backtrace code sentinel */ 545CNAME(trapexit): 546 547/* Disable interrupts: */ --- 131 unchanged lines hidden --- | 547/* Call C interrupt dispatcher: */ 548trapagain: 549 addi %r3,%r1,8 550 bl CNAME(powerpc_interrupt) 551 .globl CNAME(trapexit) /* backtrace code sentinel */ 552CNAME(trapexit): 553 554/* Disable interrupts: */ --- 131 unchanged lines hidden --- |