12d690920SAxel Dörfler/* 2716a16ceSIngo Weinhold** Copyright 2003, Axel D�fler, axeld@pinc-software.de. All rights reserved. 32d690920SAxel Dörfler** Distributed under the terms of the OpenBeOS License. 42d690920SAxel Dörfler*/ 52d690920SAxel Dörfler 62d690920SAxel Dörfler#define FUNCTION(x) .global x; .type x,@function; x 72d690920SAxel Dörfler 82d690920SAxel Dörfler.text 92d690920SAxel Dörfler 102d690920SAxel Dörfler/* uint32 get_sdr1(void); 112d690920SAxel Dörfler */ 122d690920SAxel DörflerFUNCTION(get_sdr1): 132d690920SAxel Dörfler mfsdr1 %r3 142d690920SAxel Dörfler blr 152d690920SAxel Dörfler 162d690920SAxel Dörfler/* void set_sdr1(uint32 value); 172d690920SAxel Dörfler * r3 182d690920SAxel Dörfler */ 192d690920SAxel DörflerFUNCTION(set_sdr1): 202d690920SAxel Dörfler mtsdr1 %r3 212d690920SAxel Dörfler blr 222d690920SAxel Dörfler 232d690920SAxel Dörfler/* uint32 get_sr(void *virtualAddress); 242d690920SAxel Dörfler * r3 252d690920SAxel Dörfler */ 262d690920SAxel DörflerFUNCTION(get_sr): 272d690920SAxel Dörfler mfsrin %r3, %r3 282d690920SAxel Dörfler blr 292d690920SAxel Dörfler 302d690920SAxel Dörfler/* void set_sr(void *virtualAddress, uint32 value); 312d690920SAxel Dörfler * r3 r4 322d690920SAxel Dörfler */ 332d690920SAxel DörflerFUNCTION(set_sr): 342d690920SAxel Dörfler mtsrin %r4, %r3 352d690920SAxel Dörfler blr 362d690920SAxel Dörfler 372d690920SAxel Dörfler/* uint32 get_msr(void); 382d690920SAxel Dörfler */ 392d690920SAxel DörflerFUNCTION(get_msr): 402d690920SAxel Dörfler mfmsr %r3 412d690920SAxel Dörfler blr 422d690920SAxel Dörfler 432d690920SAxel Dörfler/* uint32 set_msr(uint32 value); 442d690920SAxel Dörfler * r3 452d690920SAxel Dörfler */ 462d690920SAxel DörflerFUNCTION(set_msr): 472d690920SAxel Dörfler mtmsr %r3 482d690920SAxel Dörfler blr 492d690920SAxel Dörfler 50716a16ceSIngo Weinhold/* uint32 get_pvr(void); 51716a16ceSIngo Weinhold */ 52716a16ceSIngo WeinholdFUNCTION(get_pvr): 53716a16ceSIngo Weinhold mfpvr %r3 54716a16ceSIngo Weinhold blr 55716a16ceSIngo Weinhold 562d690920SAxel Dörfler 572d690920SAxel Dörfler#define get_ibat(num) \ 582d690920SAxel Dörfler mfibatu %r4, num; \ 592d690920SAxel Dörfler stw %r4, 0(%r3); \ 602d690920SAxel Dörfler mfibatl %r4, num; \ 612d690920SAxel Dörfler stw %r4, 4(%r3); \ 622d690920SAxel Dörfler 632d690920SAxel Dörfler#define set_ibat(num); \ 642d690920SAxel Dörfler lwz %r4, 0(%r3); \ 652d690920SAxel Dörfler mtibatu num, %r4; \ 662d690920SAxel Dörfler lwz %r4, 4(%r3); \ 672d690920SAxel Dörfler mtibatl num, %r4; 682d690920SAxel Dörfler 692d690920SAxel Dörfler/* void get_ibat0-3(block_address_translation *bat); 702d690920SAxel Dörfler * r3 712d690920SAxel Dörfler */ 722d690920SAxel DörflerFUNCTION(get_ibat0): 732d690920SAxel Dörfler get_ibat(0) 742d690920SAxel Dörfler blr 752d690920SAxel DörflerFUNCTION(get_ibat1): 762d690920SAxel Dörfler get_ibat(1) 772d690920SAxel Dörfler blr 782d690920SAxel DörflerFUNCTION(get_ibat2): 792d690920SAxel Dörfler get_ibat(2) 802d690920SAxel Dörfler blr 812d690920SAxel DörflerFUNCTION(get_ibat3): 822d690920SAxel Dörfler get_ibat(3) 832d690920SAxel Dörfler blr 842d690920SAxel Dörfler 852d690920SAxel Dörfler/* void set_ibat0-3(block_address_translation *bat); 862d690920SAxel Dörfler * r3 872d690920SAxel Dörfler */ 882d690920SAxel DörflerFUNCTION(set_ibat0): 892d690920SAxel Dörfler set_ibat(0) 902d690920SAxel Dörfler blr 912d690920SAxel DörflerFUNCTION(set_ibat1): 922d690920SAxel Dörfler set_ibat(1) 932d690920SAxel Dörfler blr 942d690920SAxel DörflerFUNCTION(set_ibat2): 952d690920SAxel Dörfler set_ibat(2) 962d690920SAxel Dörfler blr 972d690920SAxel DörflerFUNCTION(set_ibat3): 982d690920SAxel Dörfler set_ibat(3) 992d690920SAxel Dörfler blr 1002d690920SAxel Dörfler 1012d690920SAxel Dörfler/* void reset_ibats(void) 1022d690920SAxel Dörfler */ 1032d690920SAxel DörflerFUNCTION(reset_ibats): 1042d690920SAxel Dörfler li %r3, 0 1052d690920SAxel Dörfler mtibatu 0, %r3 1062d690920SAxel Dörfler mtibatl 0, %r3 1072d690920SAxel Dörfler mtibatu 1, %r3 1082d690920SAxel Dörfler mtibatl 1, %r3 1092d690920SAxel Dörfler mtibatu 2, %r3 1102d690920SAxel Dörfler mtibatl 2, %r3 1112d690920SAxel Dörfler mtibatu 3, %r3 1122d690920SAxel Dörfler mtibatl 3, %r3 1132d690920SAxel Dörfler blr 1142d690920SAxel Dörfler 1152d690920SAxel Dörfler#define get_dbat(num) \ 1162d690920SAxel Dörfler mfdbatu %r4, num; \ 1172d690920SAxel Dörfler stw %r4, 0(%r3); \ 1182d690920SAxel Dörfler mfdbatl %r4, num; \ 1192d690920SAxel Dörfler stw %r4, 4(%r3); 1202d690920SAxel Dörfler 1212d690920SAxel Dörfler#define set_dbat(num) \ 1222d690920SAxel Dörfler lwz %r4, 0(%r3); \ 1232d690920SAxel Dörfler mtdbatu num, %r4; \ 1242d690920SAxel Dörfler lwz %r4, 4(%r3); \ 1252d690920SAxel Dörfler mtdbatl num, %r4; 1262d690920SAxel Dörfler 1272d690920SAxel Dörfler/* void get_dbat0-3(block_address_translation *bat); 1282d690920SAxel Dörfler * r3 1292d690920SAxel Dörfler */ 1302d690920SAxel DörflerFUNCTION(get_dbat0): 1312d690920SAxel Dörfler get_dbat(0) 1322d690920SAxel Dörfler blr 1332d690920SAxel DörflerFUNCTION(get_dbat1): 1342d690920SAxel Dörfler get_dbat(1) 1352d690920SAxel Dörfler blr 1362d690920SAxel DörflerFUNCTION(get_dbat2): 1372d690920SAxel Dörfler get_dbat(2) 1382d690920SAxel Dörfler blr 1392d690920SAxel DörflerFUNCTION(get_dbat3): 1402d690920SAxel Dörfler get_dbat(3) 1412d690920SAxel Dörfler blr 1422d690920SAxel Dörfler 1432d690920SAxel Dörfler/* void set_dbat0-3(block_address_translation *bat); 1442d690920SAxel Dörfler * r3 1452d690920SAxel Dörfler */ 1462d690920SAxel DörflerFUNCTION(set_dbat0): 1472d690920SAxel Dörfler set_dbat(0) 1482d690920SAxel Dörfler blr 1492d690920SAxel DörflerFUNCTION(set_dbat1): 1502d690920SAxel Dörfler set_dbat(1) 1512d690920SAxel Dörfler blr 1522d690920SAxel DörflerFUNCTION(set_dbat2): 1532d690920SAxel Dörfler set_dbat(2) 1542d690920SAxel Dörfler blr 1552d690920SAxel DörflerFUNCTION(set_dbat3): 1562d690920SAxel Dörfler set_dbat(3) 1572d690920SAxel Dörfler blr 1582d690920SAxel Dörfler 1592d690920SAxel Dörfler/* void reset_dbats(void) 1602d690920SAxel Dörfler */ 1612d690920SAxel DörflerFUNCTION(reset_dbats): 1622d690920SAxel Dörfler li %r3, 0 1632d690920SAxel Dörfler mtdbatu 0, %r3 1642d690920SAxel Dörfler mtdbatl 0, %r3 1652d690920SAxel Dörfler mtdbatu 1, %r3 1662d690920SAxel Dörfler mtdbatl 1, %r3 1672d690920SAxel Dörfler mtdbatu 2, %r3 1682d690920SAxel Dörfler mtdbatl 2, %r3 1692d690920SAxel Dörfler mtdbatu 3, %r3 1702d690920SAxel Dörfler mtdbatl 3, %r3 1712d690920SAxel Dörfler blr 1722d690920SAxel Dörfler 173*01b20991SAxel Dörfler/* void __eieio(void) 174*01b20991SAxel Dörfler */ 175*01b20991SAxel DörflerFUNCTION(__eieio): 176*01b20991SAxel Dörfler eieio 177*01b20991SAxel Dörfler blr 178*01b20991SAxel Dörfler 179