1845a180fSFrançois Revol/* 2845a180fSFrançois Revol** Copyright 2003, Axel D�fler, axeld@pinc-software.de. All rights reserved. 3845a180fSFrançois Revol** Distributed under the terms of the OpenBeOS License. 4845a180fSFrançois Revol*/ 5845a180fSFrançois Revol 6*9f5e12b6SFrançois Revol#include <asm_defs.h> 7845a180fSFrançois Revol 8845a180fSFrançois Revol.text 9845a180fSFrançois Revol 1042b025beSFrançois Revol#if 0 /* PPC stuff ahead... */ 11845a180fSFrançois Revol/* uint32 get_sdr1(void); 12845a180fSFrançois Revol */ 13845a180fSFrançois RevolFUNCTION(get_sdr1): 14845a180fSFrançois Revol mfsdr1 %r3 15845a180fSFrançois Revol blr 16845a180fSFrançois Revol 17845a180fSFrançois Revol/* void set_sdr1(uint32 value); 18845a180fSFrançois Revol * r3 19845a180fSFrançois Revol */ 20845a180fSFrançois RevolFUNCTION(set_sdr1): 21845a180fSFrançois Revol mtsdr1 %r3 22845a180fSFrançois Revol blr 23845a180fSFrançois Revol 24845a180fSFrançois Revol/* uint32 get_sr(void *virtualAddress); 25845a180fSFrançois Revol * r3 26845a180fSFrançois Revol */ 27845a180fSFrançois RevolFUNCTION(get_sr): 28845a180fSFrançois Revol mfsrin %r3, %r3 29845a180fSFrançois Revol blr 30845a180fSFrançois Revol 31845a180fSFrançois Revol/* void set_sr(void *virtualAddress, uint32 value); 32845a180fSFrançois Revol * r3 r4 33845a180fSFrançois Revol */ 34845a180fSFrançois RevolFUNCTION(set_sr): 35845a180fSFrançois Revol mtsrin %r4, %r3 36845a180fSFrançois Revol blr 37845a180fSFrançois Revol 38845a180fSFrançois Revol/* uint32 get_msr(void); 39845a180fSFrançois Revol */ 40845a180fSFrançois RevolFUNCTION(get_msr): 41845a180fSFrançois Revol mfmsr %r3 42845a180fSFrançois Revol blr 43845a180fSFrançois Revol 44845a180fSFrançois Revol/* uint32 set_msr(uint32 value); 45845a180fSFrançois Revol * r3 46845a180fSFrançois Revol */ 47845a180fSFrançois RevolFUNCTION(set_msr): 48845a180fSFrançois Revol mtmsr %r3 49845a180fSFrançois Revol blr 50845a180fSFrançois Revol 51845a180fSFrançois Revol/* uint32 get_pvr(void); 52845a180fSFrançois Revol */ 53845a180fSFrançois RevolFUNCTION(get_pvr): 54845a180fSFrançois Revol mfpvr %r3 55845a180fSFrançois Revol blr 56845a180fSFrançois Revol 57845a180fSFrançois Revol 58845a180fSFrançois Revol#define get_ibat(num) \ 59845a180fSFrançois Revol mfibatu %r4, num; \ 60845a180fSFrançois Revol stw %r4, 0(%r3); \ 61845a180fSFrançois Revol mfibatl %r4, num; \ 62845a180fSFrançois Revol stw %r4, 4(%r3); \ 63845a180fSFrançois Revol 64845a180fSFrançois Revol#define set_ibat(num); \ 65845a180fSFrançois Revol lwz %r4, 0(%r3); \ 66845a180fSFrançois Revol mtibatu num, %r4; \ 67845a180fSFrançois Revol lwz %r4, 4(%r3); \ 68845a180fSFrançois Revol mtibatl num, %r4; 69845a180fSFrançois Revol 70845a180fSFrançois Revol/* void get_ibat0-3(block_address_translation *bat); 71845a180fSFrançois Revol * r3 72845a180fSFrançois Revol */ 73845a180fSFrançois RevolFUNCTION(get_ibat0): 74845a180fSFrançois Revol get_ibat(0) 75845a180fSFrançois Revol blr 76845a180fSFrançois RevolFUNCTION(get_ibat1): 77845a180fSFrançois Revol get_ibat(1) 78845a180fSFrançois Revol blr 79845a180fSFrançois RevolFUNCTION(get_ibat2): 80845a180fSFrançois Revol get_ibat(2) 81845a180fSFrançois Revol blr 82845a180fSFrançois RevolFUNCTION(get_ibat3): 83845a180fSFrançois Revol get_ibat(3) 84845a180fSFrançois Revol blr 85845a180fSFrançois Revol 86845a180fSFrançois Revol/* void set_ibat0-3(block_address_translation *bat); 87845a180fSFrançois Revol * r3 88845a180fSFrançois Revol */ 89845a180fSFrançois RevolFUNCTION(set_ibat0): 90845a180fSFrançois Revol set_ibat(0) 91845a180fSFrançois Revol blr 92845a180fSFrançois RevolFUNCTION(set_ibat1): 93845a180fSFrançois Revol set_ibat(1) 94845a180fSFrançois Revol blr 95845a180fSFrançois RevolFUNCTION(set_ibat2): 96845a180fSFrançois Revol set_ibat(2) 97845a180fSFrançois Revol blr 98845a180fSFrançois RevolFUNCTION(set_ibat3): 99845a180fSFrançois Revol set_ibat(3) 100845a180fSFrançois Revol blr 101845a180fSFrançois Revol 102845a180fSFrançois Revol/* void reset_ibats(void) 103845a180fSFrançois Revol */ 104845a180fSFrançois RevolFUNCTION(reset_ibats): 105845a180fSFrançois Revol li %r3, 0 106845a180fSFrançois Revol mtibatu 0, %r3 107845a180fSFrançois Revol mtibatl 0, %r3 108845a180fSFrançois Revol mtibatu 1, %r3 109845a180fSFrançois Revol mtibatl 1, %r3 110845a180fSFrançois Revol mtibatu 2, %r3 111845a180fSFrançois Revol mtibatl 2, %r3 112845a180fSFrançois Revol mtibatu 3, %r3 113845a180fSFrançois Revol mtibatl 3, %r3 114845a180fSFrançois Revol blr 115845a180fSFrançois Revol 116845a180fSFrançois Revol#define get_dbat(num) \ 117845a180fSFrançois Revol mfdbatu %r4, num; \ 118845a180fSFrançois Revol stw %r4, 0(%r3); \ 119845a180fSFrançois Revol mfdbatl %r4, num; \ 120845a180fSFrançois Revol stw %r4, 4(%r3); 121845a180fSFrançois Revol 122845a180fSFrançois Revol#define set_dbat(num) \ 123845a180fSFrançois Revol lwz %r4, 0(%r3); \ 124845a180fSFrançois Revol mtdbatu num, %r4; \ 125845a180fSFrançois Revol lwz %r4, 4(%r3); \ 126845a180fSFrançois Revol mtdbatl num, %r4; 127845a180fSFrançois Revol 128845a180fSFrançois Revol/* void get_dbat0-3(block_address_translation *bat); 129845a180fSFrançois Revol * r3 130845a180fSFrançois Revol */ 131845a180fSFrançois RevolFUNCTION(get_dbat0): 132845a180fSFrançois Revol get_dbat(0) 133845a180fSFrançois Revol blr 134845a180fSFrançois RevolFUNCTION(get_dbat1): 135845a180fSFrançois Revol get_dbat(1) 136845a180fSFrançois Revol blr 137845a180fSFrançois RevolFUNCTION(get_dbat2): 138845a180fSFrançois Revol get_dbat(2) 139845a180fSFrançois Revol blr 140845a180fSFrançois RevolFUNCTION(get_dbat3): 141845a180fSFrançois Revol get_dbat(3) 142845a180fSFrançois Revol blr 143845a180fSFrançois Revol 144845a180fSFrançois Revol/* void set_dbat0-3(block_address_translation *bat); 145845a180fSFrançois Revol * r3 146845a180fSFrançois Revol */ 147845a180fSFrançois RevolFUNCTION(set_dbat0): 148845a180fSFrançois Revol set_dbat(0) 149845a180fSFrançois Revol blr 150845a180fSFrançois RevolFUNCTION(set_dbat1): 151845a180fSFrançois Revol set_dbat(1) 152845a180fSFrançois Revol blr 153845a180fSFrançois RevolFUNCTION(set_dbat2): 154845a180fSFrançois Revol set_dbat(2) 155845a180fSFrançois Revol blr 156845a180fSFrançois RevolFUNCTION(set_dbat3): 157845a180fSFrançois Revol set_dbat(3) 158845a180fSFrançois Revol blr 159845a180fSFrançois Revol 160845a180fSFrançois Revol/* void reset_dbats(void) 161845a180fSFrançois Revol */ 162845a180fSFrançois RevolFUNCTION(reset_dbats): 163845a180fSFrançois Revol li %r3, 0 164845a180fSFrançois Revol mtdbatu 0, %r3 165845a180fSFrançois Revol mtdbatl 0, %r3 166845a180fSFrançois Revol mtdbatu 1, %r3 167845a180fSFrançois Revol mtdbatl 1, %r3 168845a180fSFrançois Revol mtdbatu 2, %r3 169845a180fSFrançois Revol mtdbatl 2, %r3 170845a180fSFrançois Revol mtdbatu 3, %r3 171845a180fSFrançois Revol mtdbatl 3, %r3 172845a180fSFrançois Revol blr 173845a180fSFrançois Revol 174845a180fSFrançois Revol/* void __eieio(void) 175845a180fSFrançois Revol */ 176845a180fSFrançois RevolFUNCTION(__eieio): 177845a180fSFrançois Revol eieio 178845a180fSFrançois Revol blr 17942b025beSFrançois Revol#endif 180