diff options
Diffstat (limited to 'stand/powerpc/ps3/lv1call.S')
-rw-r--r-- | stand/powerpc/ps3/lv1call.S | 346 |
1 files changed, 0 insertions, 346 deletions
diff --git a/stand/powerpc/ps3/lv1call.S b/stand/powerpc/ps3/lv1call.S deleted file mode 100644 index a399a9c..0000000 --- a/stand/powerpc/ps3/lv1call.S +++ /dev/null @@ -1,346 +0,0 @@ -/*- - * Copyright (C) 2010 Nathan Whitehorn - * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - */ - -/* Hypercall stubs. Note: this is all a hack and should die. */ - -#define hc .long 0x44000022 - -#define LD64_IM(r, highest, higher, high, low) \ - lis r,highest; \ - addi r,r,higher; \ - sldi r,r,32; \ - addis r,r,high; \ - addi r,r,low; - -#define SIMPLE_HVCALL(x, c) \ -.global x; \ -x: \ - mflr %r0; \ - stw %r0,4(%r1); \ - clrldi %r3,%r3,32; \ - clrldi %r4,%r4,32; \ - clrldi %r5,%r5,32; \ - clrldi %r6,%r6,32; \ - clrldi %r7,%r7,32; \ - clrldi %r8,%r8,32; \ - clrldi %r9,%r9,32; \ - clrldi %r10,%r10,32; \ - li %r11,c; \ - hc; \ - extsw %r3,%r3; \ - lwz %r0,4(%r1); \ - mtlr %r0; \ - blr - -SIMPLE_HVCALL(lv1_open_device, 170) -SIMPLE_HVCALL(lv1_close_device, 171) -SIMPLE_HVCALL(lv1_gpu_open, 210) -SIMPLE_HVCALL(lv1_gpu_context_attribute, 225) -SIMPLE_HVCALL(lv1_panic, 255) -SIMPLE_HVCALL(lv1_net_start_tx_dma, 187) -SIMPLE_HVCALL(lv1_net_stop_tx_dma, 188) -SIMPLE_HVCALL(lv1_net_start_rx_dma, 189) -SIMPLE_HVCALL(lv1_net_stop_rx_dma, 190) - -.global lv1_get_physmem -lv1_get_physmem: - mflr %r0 - stw %r0,4(%r1) - stw %r3,-8(%r1) /* Address for maxmem */ - - li %r11,69 /* Get PU ID */ - hc - std %r4,-16(%r1) - - li %r11,74 /* Get LPAR ID */ - hc - std %r4,-24(%r1) - - ld %r3,-24(%r1) - LD64_IM(%r4,0x0000,0x0000,0x6269,0x0000 /* "bi" */) - LD64_IM(%r5,0x7075,0x0000,0x0000,0x0000 /* "pu" */) - ld %r6,-16(%r1) - LD64_IM(%r7,0x726d,0x5f73,0x697a,0x6500 /* "rm_size" */) - li %r11,91 - hc - extsw %r3,%r3 - - lwz %r5,-8(%r1) - std %r4,0(%r5) - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_setup_address_space -lv1_setup_address_space: - mflr %r0 - stw %r0,4(%r1) - - stw %r3,-4(%r1) - stw %r4,-8(%r1) - - li %r3,18 /* PT size: log2(256 KB) */ - li %r4,2 /* Two page sizes */ - li %r5,24 /* Page sizes: (24 << 56) | (16 << 48) */ - sldi %r5,%r5,24 - li %r6,16 - sldi %r6,%r6,16 - or %r5,%r5,%r6 - sldi %r5,%r5,32 - - li %r11,2 /* lv1_construct_virtual_address_space */ - hc - - lwz %r6,-4(%r1) - lwz %r7,-8(%r1) - std %r4,0(%r6) - std %r5,0(%r7) - - /* AS_ID in r4 */ - mr %r3,%r4 - li %r11,7 /* lv1_select_virtual_address_space */ - hc - extsw %r3,%r3 - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_insert_pte -lv1_insert_pte: - mflr %r0 - stw %r0,4(%r1) - - mr %r11,%r4 /* Save R4 */ - - clrldi %r3,%r3,32 - clrldi %r7,%r5,32 - - sldi %r4,%r3,3 /* Convert ptegidx into base PTE slot */ - li %r3,0 /* Current address space */ - ld %r5,0(%r11) - ld %r6,8(%r11) - li %r8,0 /* No other flags */ - - li %r11,158 - hc - extsw %r3,%r3 - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_gpu_context_allocate -lv1_gpu_context_allocate: - mflr %r0 - stw %r0,4(%r1) - stw %r7,-4(%r1) - - sldi %r3,%r3,32 - clrldi %r4,%r4,32 - or %r3,%r3,%r4 - clrldi %r4,%r5,32 - clrldi %r5,%r6,32 - - li %r11,217 - hc - extsw %r3,%r3 - - lwz %r7,-4(%r1) - std %r4,0(%r7) - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_gpu_memory_allocate -lv1_gpu_memory_allocate: - mflr %r0 - stw %r0,4(%r1) - stw %r8,-4(%r1) - stw %r9,-8(%r1) - - li %r11,214 - hc - extsw %r3,%r3 - - lwz %r8,-4(%r1) - lwz %r9,-8(%r1) - std %r4,0(%r8) - std %r5,0(%r9) - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_net_control -lv1_net_control: - mflr %r0 - stw %r0,4(%r1) - stw %r9,-4(%r1) - - li %r11,194 - hc - extsw %r3,%r3 - - lwz %r8,-4(%r1) - std %r4,0(%r8) - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_setup_dma -lv1_setup_dma: - mflr %r0 - stw %r0,4(%r1) - stw %r3,-4(%r1) - stw %r4,-8(%r1) - stw %r5,-12(%r1) - - lwz %r3,-4(%r1) - lwz %r4,-8(%r1) - lis %r5,0x0800 /* 128 MB */ - li %r6,24 /* log2(IO_PAGESIZE) */ - li %r7,0 /* flags */ - li %r11,174 /* lv1_allocate_device_dma_region */ - hc - extsw %r3,%r3 - cmpdi %r3,0 - bne 1f - std %r4,-24(%r1) - - lwz %r3,-4(%r1) - lwz %r4,-8(%r1) - li %r5,0 - ld %r6,-24(%r1) - lis %r7,0x0800 /* 128 MB */ - lis %r8,0xf800 /* flags */ - sldi %r8,%r8,32 - li %r11,176 /* lv1_map_device_dma_region */ - hc - extsw %r3,%r3 - - lwz %r9,-12(%r1) - ld %r6,-24(%r1) - std %r6,0(%r9) - -1: lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_get_repository_node_value -lv1_get_repository_node_value: - mflr %r0 - stw %r0,4(%r1) - - sldi %r3,%r3,32 - clrldi %r4,%r4,32 - or %r3,%r3,%r4 - sldi %r4,%r5,32 - clrldi %r5,%r6,32 - or %r4,%r4,%r5 - sldi %r5,%r7,32 - clrldi %r6,%r8,32 - or %r5,%r5,%r6 - sldi %r6,%r9,32 - clrldi %r7,%r10,32 - or %r6,%r6,%r7 - lwz %r7,8(%r1) - lwz %r8,12(%r1) - sldi %r7,%r7,32 - or %r7,%r7,%r8 - - li %r11,91 - hc - extsw %r3,%r3 - - lwz %r6,16(%r1) - std %r4,0(%r6) - lwz %r6,20(%r1) - std %r5,0(%r6) - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_storage_read -lv1_storage_read: - mflr %r0 - stw %r0,4(%r1) - - sldi %r3,%r3,32 - clrldi %r4,%r4,32 - or %r3,%r3,%r4 - sldi %r4,%r5,32 - clrldi %r5,%r6,32 - or %r4,%r4,%r5 - sldi %r5,%r7,32 - clrldi %r6,%r8,32 - or %r5,%r5,%r6 - sldi %r6,%r9,32 - clrldi %r7,%r10,32 - or %r6,%r6,%r7 - ld %r7,8(%r1) - ld %r8,16(%r1) - - li %r11,245 - hc - extsw %r3,%r3 - - lwz %r5,24(%r1) - std %r4,0(%r5) - - lwz %r0,4(%r1) - mtlr %r0 - blr - -.global lv1_storage_check_async_status -lv1_storage_check_async_status: - mflr %r0 - stw %r0,4(%r1) - stw %r7,-4(%r1) - - sldi %r3,%r3,32 - clrldi %r4,%r4,32 - or %r3,%r3,%r4 - sldi %r4,%r5,32 - clrldi %r5,%r6,32 - or %r4,%r4,%r5 - - li %r11,254 - hc - extsw %r3,%r3 - - lwz %r5,-4(%r1) - std %r4,0(%r5) - - lwz %r0,4(%r1) - mtlr %r0 - blr |