Ok. I didn't make 2.4.0 in 2000. Tough. I tried, but we had some
[davej-history.git] / arch / ppc / kernel / mol.h
blob6105867e1c22a41f27f75e484a03c45926d57d3d
1 /*
2 * arch/ppc/kernel/mol.h
3 *
4 * <mol.h>
5 *
6 * Mac-on-Linux hook macros
7 * <http://www.maconlinux.org>
8 *
9 * Copyright (C) 2000 Samuel Rydh (samuel@ibrium.se)
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation
17 #ifndef _PPC_KERNEL_MOL
18 #define _PPC_KERNEL_MOL
20 #include <linux/config.h>
22 #ifdef CONFIG_MOL
23 #define MOL_INTERFACE_VERSION 3
25 #define MOL_HOOK(hook_num) \
26 lwz r0,(mol_interface + 4 * hook_num + 4)@l(0); \
27 cmpwi cr1,r0,0; \
28 beq+ cr1,777f; \
29 mtctr r0; \
30 bctrl; \
31 777: lwz r0,GPR0(r21)
33 #define MOL_HOOK_RESTORE(hook_num) \
34 mfcr r2; \
35 MOL_HOOK(hook_num); \
36 mtcrf 0x80,r2; \
37 lwz r2,_CTR(r21); \
38 mtctr r2; \
39 lwz r2,GPR2(r21)
41 #define MOL_HOOK_MMU(hook_num, scr) \
42 lis scr,(mol_interface + 4 * hook_num + 4)@ha; \
43 lwz scr,(mol_interface + 4 * hook_num + 4)@l(scr); \
44 cmpwi cr1,scr,0; \
45 beq+ cr1,778f; \
46 mtctr scr; \
47 bctrl; \
48 778:
50 #define MOL_HOOK_TLBMISS(hook_num) \
51 lwz r0,(mol_interface + 4 * hook_num + 4)@l(0); \
52 cmpwi r0,0; \
53 beq+ 779f; \
54 mflr r3; \
55 mtlr r0; \
56 blrl; \
57 mtlr r3; \
58 779:
60 #else
61 #define MOL_HOOK(num)
62 #define MOL_HOOK_RESTORE(num)
63 #define MOL_HOOK_MMU(num, scr)
64 #define MOL_HOOK_TLBMISS(num)
65 #endif
68 #endif /* _PPC_KERNEL_MOL */