// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <stdint.h>

#include <zircon/compiler.h>
#include <zircon/features.h>
#include <zircon/syscalls.h>

#include "private.h"

zx_status_t _zx_system_get_features(uint32_t kind, uint32_t* features) {
    switch (kind) {
    case ZX_FEATURE_KIND_CPU: {
        uint32_t cpu_features = DATA_CONSTANTS.features.cpu;
        if (!(cpu_features & ZX_HAS_CPU_FEATURES)) {
            return ZX_ERR_NOT_SUPPORTED;
        }

        *features = cpu_features;
        return ZX_OK;
    }
    case ZX_FEATURE_KIND_HW_BREAKPOINT_COUNT: {
        *features = DATA_CONSTANTS.features.hw_breakpoint_count;
        return ZX_OK;
    }
    case ZX_FEATURE_KIND_HW_WATCHPOINT_COUNT: {
        *features = DATA_CONSTANTS.features.hw_watchpoint_count;
        return ZX_OK;
    }
    default:
        return ZX_ERR_NOT_SUPPORTED;
    }
}

VDSO_INTERFACE_FUNCTION(zx_system_get_features);
