<commit_before>//=======================================================================
// Copyright <NAME> 2013-2014.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
//  http://www.boost.org/LICENSE_1_0.txt)
//=======================================================================

#ifndef KERNEL_UTILS_H
#define KERNEL_UTILS_H

#include <types.hpp>

uint8_t in_byte(uint16_t _port);
void out_byte(uint16_t _port, uint8_t _data);

uint16_t in_word(uint16_t _port);
void out_word(uint16_t _port, uint16_t _data);

#endif<commit_msg>Simple utility to debug stack alignment<commit_after>//=======================================================================
// Copyright <NAME> 2013-2014.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
//  http://www.boost.org/LICENSE_1_0.txt)
//=======================================================================

#ifndef KERNEL_UTILS_H
#define KERNEL_UTILS_H

#include <types.hpp>

uint8_t in_byte(uint16_t _port);
void out_byte(uint16_t _port, uint8_t _data);

uint16_t in_word(uint16_t _port);
void out_word(uint16_t _port, uint16_t _data);

void print_stack(const char* msg, size_t check);
#define SHOW_STACK(M) { size_t check = 0; asm volatile("mov %0, rsp;" : "=r" (check)); print_stack(((M)), check); }

#endif
{'fraction_non_alphanumeric': 0.30416068866571017, 'fraction_numerical': 0.04160688665710186, 'mean_word_length': 6.581521739130435, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7296790', 'n_tokens_mistral': 491, 'n_tokens_neox': 441, 'n_words': 109}