1229677Sgonzo/*- 2229677Sgonzo * Copyright (c) 2011, Oleksandr Tymoshenko <gonzo@FreeBSD.org> 3229677Sgonzo * All rights reserved. 4229677Sgonzo * 5229677Sgonzo * Redistribution and use in source and binary forms, with or without 6229677Sgonzo * modification, are permitted provided that the following conditions 7229677Sgonzo * are met: 8229677Sgonzo * 1. Redistributions of source code must retain the above copyright 9229677Sgonzo * notice unmodified, this list of conditions, and the following 10229677Sgonzo * disclaimer. 11229677Sgonzo * 2. Redistributions in binary form must reproduce the above copyright 12229677Sgonzo * notice, this list of conditions and the following disclaimer in the 13229677Sgonzo * documentation and/or other materials provided with the distribution. 14229677Sgonzo * 15229677Sgonzo * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16229677Sgonzo * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17229677Sgonzo * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18229677Sgonzo * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19229677Sgonzo * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20229677Sgonzo * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21229677Sgonzo * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22229677Sgonzo * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23229677Sgonzo * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24229677Sgonzo * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25229677Sgonzo * SUCH DAMAGE. 26229677Sgonzo */ 27229677Sgonzo 28229677Sgonzo#include <sys/cdefs.h> 29229677Sgonzo__FBSDID("$FreeBSD$"); 30229677Sgonzo 31229677Sgonzo#include <sys/types.h> 32229677Sgonzo#include <sys/systm.h> 33229677Sgonzo#include <sys/param.h> 34229677Sgonzo#include <sys/kernel.h> 35229677Sgonzo#include <vm/uma.h> 36229677Sgonzo 37229677Sgonzo#include <machine/octeon_cop2.h> 38229677Sgonzo 39229677Sgonzostatic uma_zone_t ctxzone; 40229677Sgonzo 41229677Sgonzostatic void 42229677Sgonzoocteon_cop2_init(void* dummy) 43229677Sgonzo{ 44229677Sgonzo printf("Create COP2 context zone\n"); 45229677Sgonzo ctxzone = uma_zcreate("COP2 context", 46229677Sgonzo sizeof(struct octeon_cop2_state), 47229677Sgonzo NULL, NULL, NULL, NULL, 8, 0); 48229677Sgonzo} 49229677Sgonzo 50229677Sgonzostruct octeon_cop2_state * 51229677Sgonzoocteon_cop2_alloc_ctx() 52229677Sgonzo{ 53229677Sgonzo return uma_zalloc(ctxzone, M_NOWAIT); 54229677Sgonzo} 55229677Sgonzo 56229677Sgonzovoid 57229677Sgonzoocteon_cop2_free_ctx(struct octeon_cop2_state *ctx) 58229677Sgonzo{ 59229677Sgonzo uma_zfree(ctxzone, ctx); 60229677Sgonzo} 61229677Sgonzo 62229677SgonzoSYSINIT(octeon_cop2, SI_SUB_CPU, SI_ORDER_FIRST, octeon_cop2_init, NULL); 63